2-1 基本数据类型number,string,boolean
// 基本数据类型 number string boolean
var a = 10;
var str = "hello world";
var b = true;
console.log(typeof a); // number
console.log(typeof b); // string
console.log(typeof c); // boolean
typeof(查看数据类型)
2-2 引用数据类型 Array,Function,Object
// 数组 array [] typeof不能识别数组
// 使用 Array.isArray 来判断是否是数组
var arr = [1,2,3];
console.log(arr.length);
console.log(typeof(arr)); // object
console.log(Array.isArray(arr)) // true
// 数组下标从0开始,下标越界之后输出undefined
2-3强制类型转换
string—>number 只能识别纯数字的字符串
// string --> number 只能识别纯数字的字符串
// Number(" ") Number("") Number(null) => 输出 0
var str = "10";
var s = "hello world"
var z = "2121sgd"
var num = Number(str)
console.log(num) // 10
console.log(Number(s)) // NaN 不是一个数字
console.log(Number(z)) // NaN
boolean—>number
var b = true
var f = false
console.log(Number(b)) // 1
console.log(Number(f)) // 0
numer—>boolean 0false 非0true
var a = 0;
var b = -1;
var c = 20;
console.log(Boolean(a)) // false
console.log(Boolean(b)) // true
console.log(Boolean(c)) // true
string—>boolaen 空字符串为false,其余为true
var str = "hello world"
var str1 = " "
var str2 =""
console.log(Boolean(str)) // true
console.log(Boolean(str1)) // true
console.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 = true
var 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= 100
console.log(a+b+c) // 101true
console.log(a-b+c) // 10
console.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 = true
var b = 1;
console.log(a==b) // true
console.log(a=="1") //true 两边都先转为number
// Number(""),Number(" "),Number(null) => 输出 0
console.log(false == ""); // true
console.log(true == 1); // true
console.log(null == undefined); // true
console.log(undefined == false); // false
console.log(1 == "1"); // true
console.log(null == false); // false
/* 1.只有有一边为 boolean 先两边转为number
2.一边为string,一边为number,先将两遍转为number
// 两边都先转为number
3. null == undefined
4. null 和 undefined 不能转化为其他值
*/
2-4-3 逻辑运算符( &&,||,!)
两边先转换boolean,比较后返回的是boolean
// && 逻辑与 两个为true,结果才为true
// || 或 只要有一个为true,结果就为true
// ! 非
console.log(3>2 && 4>3) // true && true 结果为true
console.log(3>2 && 4<3) // true && false 结果为false
console.log(11>5 || 3<4) // true || false 结果为true
console.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) // 6
console.log(b) // 0