1.第一道
let a = {},
b = '0',
c = 0
a[b] = '张三'
a[c] = '李四'
console.log(a[b])//李四
原因:一个对象中的属性名不能重复,属性名一般都是字符串,在这里,字符串‘0’和数字0是一样的
2.第二道
let a = {}
b = Symbol('1')
c = Symbol('1')
a[b] = '张三'
a[c] = '李四'
console.log(a[b])//张三
原因:Symbol创建唯一值
3.第三道
let a = {},
b = {
n:'1'
},
c = {
m:'2'
}
a[b] = '张三'
a[c] = '李四'
console.log(a[b])//李四
对象转为字符串后都是[Object object]
因此无论是对象b还是对象c作为属性名,都会转化成[Object object],
a[b] = a[’[Object object]’] = '李四‘
4.第四题
var test = (function(i){
return function () {
alert(i*=2)
}
})(2)
test(5)//'4'
注意:alert()弹出来的结果都要toString()一下,输出的是字符串
5.第五题
var a = 0,
b = 0
function A(a){
A = function(b){
alert(a + b++)
}
alert(a++)
}
A(1)//'1'
A(2)//'4'