1、字符串和运算符的运算
var a = 1 + "2" + "2"; console.log(a); // 122 console.log(typeof a); // 返回string 属于加号拼接 var b = + 1 + "2" + "2"; console.log(b); // 122 console.log(typeof b); // 返回string 分析:属于加号拼接 +1和1一样 var c = "2" > 1; console.log(c); // true console.log(typeof c); // boolean 分析 > 将字符串2转换为数字,然后比较,返回布尔值 var d = 1 + +"2" + "2"; console.log(d); // 32 console.log(typeof d); // string 分析:1 + +"2" 后一个+号为正号,这时和为3(number),然后拼接2(string) 结果 32 var e = 1 +- "2" + "2" console.log(e); // -12 console.log(typeof e); // string 分析:1 +- "2" -号为负号 结果 -12 var f = "A" + "B" + "2"; console.log(f) // AB2 console.log(typeof f); // string 分析:+号的隐式转化 var g = "A" - "B" + "2"; console.log(g); // NaN2 console.log(typeof g); // string 分析:"A" - "B" 为NaN,然后+拼接为字符串 var h = "A" - "B" + 2; console.log(h); // NaN console.log(typeof h); // number "A" - "B" 为NaN,然后加上一个 数字2,仍然为number
2、&& 和 || 的运算
console.log(1 && 2 && 3 && 4); // 全部为真——打印输入最后一个真——4 console.log(1 && 0 && false && 4); // 部分为假——打印输入第一个假——0 console.log(1 && false && 0 && 4); // 部分为假——打印输入第一个假——false console.log(1 || 2 || 3 || 4); // 若有真,则输出第一个真——1 console.log(5 || 0 || false || 4); // 若有真,则输出第一个真——5 console.log( 0 || false || 0 || !0); // 若有真,则输出第一个真——true(隐式转为布尔值)
总结:
&& 运算时,若全是真,则返回最后一个真;若有假,返回第一个假
|| 运算时,若有真,返回第一个真
3、null 和 undefined
console.log(typeof null); //? object // 在JavaScript中null值表示一个空对象指针,而这也是使用typeof 操作检测null返回object的原因 // 经常设置为 null 来清空对象.. console.log(typeof undefined); //? undefined // undefined 是一个没有设置值的变量。typeof一个没有值的变量会返回 undefined。 console.log(typeof NaN); //? number // Not a number,代表一个非数值.但是它本身任然是一个number类型的数字 console.log(null == undefined); //? true console.log(null === undefined); //? false // null 和 undefined 的值相等,但类型不等; console.log(NaN == undefined); //? false // undefined 表示未定义的变量 NaN 就是不是数字的任意值. var A = 'A' - 0; var B = 'B' - 0; console.log(A); // NaN console.log(B); // NaN console.log(A == B); // false console.log(NaN == NaN); // false // 因为NaN 是:Not a number 不是一个数字的缩写既然不是一个数字 // NaN 可以看做不是数字的任意值,但不是确切的某一个值.