2-1 基本数据类型number,string,boolean
// 基本数据类型 number string booleanvar a = 10;var str = "hello world";var b = true;console.log(typeof a); // numberconsole.log(typeof b); // stringconsole.log(typeof c); // booleantypeof(查看数据类型)
2-2 引用数据类型 Array,Function,Object
// 数组 array [] typeof不能识别数组
// 使用 Array.isArray 来判断是否是数组
var arr = [1,2,3];console.log(arr.length);console.log(typeof(arr)); // objectconsole.log(Array.isArray(arr)) // true// 数组下标从0开始,下标越界之后输出undefined
2-3强制类型转换
string—>number 只能识别纯数字的字符串
// string --> number 只能识别纯数字的字符串// Number(" ") Number("") Number(null) => 输出 0var str = "10";var s = "hello world"var z = "2121sgd"var num = Number(str)console.log(num) // 10console.log(Number(s)) // NaN 不是一个数字console.log(Number(z)) // NaN
boolean—>number
var b = truevar f = falseconsole.log(Number(b)) // 1console.log(Number(f)) // 0
numer—>boolean 0false 非0true
var a = 0;var b = -1;var c = 20;console.log(Boolean(a)) // falseconsole.log(Boolean(b)) // trueconsole.log(Boolean(c)) // true
string—>boolaen 空字符串为false,其余为true
var str = "hello world"var str1 = " "var str2 =""console.log(Boolean(str)) // trueconsole.log(Boolean(str1)) // trueconsole.log(Boolean(str2)) // false
任意类型转换为number ,parseInt(),parseFloat()
var str = "12px";var str2 = "12.12121px"console.log(parseInt(str))console.log(parseFloat(str2))
任意类型转换为string ,string(),tostring(),+”字符串”
var a = truevar str = true+""console.log(typeof str)console.log(typeof String(a))console.log(typeof a.toString())
2-4自动类型转换
2-4-1算数运算符(+ - * / % )
先将两边转换为number,再进行运算。
// + 运算符 特殊:遇到字符串变为 拼接符var a = "10";var b = 1;var c = true;console.log(a+b-c) // 101-1= 100console.log(a+b+c) // 101trueconsole.log(a-b+c) // 10console.log(a+c-b) // NaN// NaN和任何数值去计算,结果都是NaN"1"-9+"true"-parseInt(12.34) // NaN"9"-8+"false" // 1false"9"-8-"false" // NaN
var a = true;//减法运算符var b = "13";var c = b-a;/* var c = Number(b)-Number(a) */console.log(c) // 输出12"true1"-1 // NaN
2-4-2比较运算符(<,>,<=,==,>=,!=)
两边先转换为number,比较后返回的是boolean
var a = truevar b = 1;console.log(a==b) // trueconsole.log(a=="1") //true 两边都先转为number
// Number(""),Number(" "),Number(null) => 输出 0console.log(false == ""); // trueconsole.log(true == 1); // trueconsole.log(null == undefined); // trueconsole.log(undefined == false); // falseconsole.log(1 == "1"); // trueconsole.log(null == false); // false/* 1.只有有一边为 boolean 先两边转为number2.一边为string,一边为number,先将两遍转为number// 两边都先转为number3. null == undefined4. null 和 undefined 不能转化为其他值*/
2-4-3 逻辑运算符( &&,||,!)
两边先转换boolean,比较后返回的是boolean
// && 逻辑与 两个为true,结果才为true// || 或 只要有一个为true,结果就为true// ! 非console.log(3>2 && 4>3) // true && true 结果为trueconsole.log(3>2 && 4<3) // true && false 结果为falseconsole.log(11>5 || 3<4) // true || false 结果为trueconsole.log(!(3>4)) //!false 结果为tru
||有一边为true,遇到true就会返回。
&&两边都为true,才会返回true(最后一个值),遇到false直接返回。
2-4-4 三元运算和赋值运算
// true 输出问号后面的第一段语句// false 输出问号后面的第二段语句var a = (4>5)?"4大于5":"4小于5";console.log(a)// +=,-=var a = 2;//a=a+4;a+=4;var b = 4;b-=4; // b=b-4;console.log(a) // 6console.log(b) // 0
