2-1 基本数据类型number,string,boolean

  1. // 基本数据类型 number string boolean
  2. var a = 10;
  3. var str = "hello world";
  4. var b = true;
  5. console.log(typeof a); // number
  6. console.log(typeof b); // string
  7. console.log(typeof c); // boolean
  8. typeof(查看数据类型)

2-2 引用数据类型 Array,Function,Object

// 数组 array [] typeof不能识别数组
// 使用 Array.isArray 来判断是否是数组

  1. var arr = [1,2,3];
  2. console.log(arr.length);
  3. console.log(typeof(arr)); // object
  4. console.log(Array.isArray(arr)) // true
  5. // 数组下标从0开始,下标越界之后输出undefined

2-3强制类型转换

string—>number 只能识别纯数字的字符串

  1. // string --> number 只能识别纯数字的字符串
  2. // Number(" ") Number("") Number(null) => 输出 0
  3. var str = "10";
  4. var s = "hello world"
  5. var z = "2121sgd"
  6. var num = Number(str)
  7. console.log(num) // 10
  8. console.log(Number(s)) // NaN 不是一个数字
  9. console.log(Number(z)) // NaN

boolean—>number

  1. var b = true
  2. var f = false
  3. console.log(Number(b)) // 1
  4. console.log(Number(f)) // 0

numer—>boolean 0false 非0true

  1. var a = 0;
  2. var b = -1;
  3. var c = 20;
  4. console.log(Boolean(a)) // false
  5. console.log(Boolean(b)) // true
  6. console.log(Boolean(c)) // true

string—>boolaen 空字符串为false,其余为true

  1. var str = "hello world"
  2. var str1 = " "
  3. var str2 =""
  4. console.log(Boolean(str)) // true
  5. console.log(Boolean(str1)) // true
  6. console.log(Boolean(str2)) // false

任意类型转换为number ,parseInt(),parseFloat()

  1. var str = "12px";
  2. var str2 = "12.12121px"
  3. console.log(parseInt(str))
  4. console.log(parseFloat(str2))

任意类型转换为string ,string(),tostring(),+”字符串”

  1. var a = true
  2. var str = true+""
  3. console.log(typeof str)
  4. console.log(typeof String(a))
  5. console.log(typeof a.toString())

2-4自动类型转换

2-4-1算数运算符(+ - * / % )

先将两边转换为number,再进行运算。

  1. // + 运算符 特殊:遇到字符串变为 拼接符
  2. var a = "10";
  3. var b = 1;
  4. var c = true;
  5. console.log(a+b-c) // 101-1= 100
  6. console.log(a+b+c) // 101true
  7. console.log(a-b+c) // 10
  8. console.log(a+c-b) // NaN
  9. // NaN和任何数值去计算,结果都是NaN
  10. "1"-9+"true"-parseInt(12.34) // NaN
  11. "9"-8+"false" // 1false
  12. "9"-8-"false" // NaN
  1. var a = true;//减法运算符
  2. var b = "13";
  3. var c = b-a;
  4. /* var c = Number(b)-Number(a) */
  5. console.log(c) // 输出12
  6. "true1"-1 // NaN


2-4-2比较运算符(<,>,<=,==,>=,!=)

两边先转换为number,比较后返回的是boolean

  1. var a = true
  2. var b = 1;
  3. console.log(a==b) // true
  4. console.log(a=="1") //true 两边都先转为number
  1. // Number(""),Number(" "),Number(null) => 输出 0
  2. console.log(false == ""); // true
  3. console.log(true == 1); // true
  4. console.log(null == undefined); // true
  5. console.log(undefined == false); // false
  6. console.log(1 == "1"); // true
  7. console.log(null == false); // false
  8. /* 1.只有有一边为 boolean 先两边转为number
  9. 2.一边为string,一边为number,先将两遍转为number
  10. // 两边都先转为number
  11. 3. null == undefined
  12. 4. null 和 undefined 不能转化为其他值
  13. */

2-4-3 逻辑运算符( &&,||,!)

两边先转换boolean,比较后返回的是boolean

  1. // && 逻辑与 两个为true,结果才为true
  2. // || 或 只要有一个为true,结果就为true
  3. // ! 非
  4. console.log(3>2 && 4>3) // true && true 结果为true
  5. console.log(3>2 && 4<3) // true && false 结果为false
  6. console.log(11>5 || 3<4) // true || false 结果为true
  7. console.log(!(3>4)) //!false 结果为tru

||有一边为true,遇到true就会返回。
&&两边都为true,才会返回true(最后一个值),遇到false直接返回。

2-4-4 三元运算和赋值运算

  1. // true 输出问号后面的第一段语句
  2. // false 输出问号后面的第二段语句
  3. var a = (4>5)?"4大于5":"4小于5";
  4. console.log(a)
  5. // +=,-=
  6. var a = 2;
  7. //a=a+4;
  8. a+=4;
  9. var b = 4;
  10. b-=4; // b=b-4;
  11. console.log(a) // 6
  12. console.log(b) // 0