一些javascript题目
var result = [10] + 1; console.log(result)
"101" 存在运算符"+",意味着将[10]转化为一个值,相当于调用其valueOf()方法,而Array的valueOf相当于其toString
var result = ['a', 'b', 'c'] + ""; console.log(result)
"a,b,c" 与一个空字符相加,我们大可以就当成强行调用其toString方法,而Array的toString方法相当于调用其join方法,join的默认分隔符则为","
var result = 'a' + 5; console.log(result)
"a5" 加号表达式优先考虑字符串拼接
var result = 3.75 | 0; console.log(result)
3 数值|0相当于对数值进行Math.floor
var result = 65 / 'a'; console.log(result)
NaN 'a'首先要转换为一个Number类型,既然不能转换为一个正常的数字,就转换为NaN,与NaN进行运算结果都为NaN
var obj = {"10": 1}; obj[10] = 2; obj[[1, 0]] = 3; var result = obj["10"] + obj[10] + obj[[1, 0]]; console.log(result)
7 对象的键总为字符串,因此obj[10]相当于obj["10"],obj[[1,0]]相当于obj["1,0"]
var $ = {"": String}; var result = !!$[([])](); console.log(result)
false 转换过程如下 !!$[([])]() --> !!$[""]() --> !!String() --> !!"" --> false
var result = (' \t\r\n ' == 0); console.log(result)
true 考空白字符串的类型 参见http://www.cnblogs.com/rubylouvre/archive/2009/09/18/1568794.html这里的回复讨论
var a = new String("123"); var b = "123"; var result = (a === b); console.log(result)
false 一个为object一个为string
var a = {key: 1}; var b = {key: 1}; var result = (a == b); console.log(result)
false 两个对象总是不等的
机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年