js常见但是容易错的JS题目解答
1.
"1" + 2 + "3" + 4
10
1234
37
答案:1234,加法优先级等同,从左往右,数字与字符串相加,数字转换成字符串进行运算,结果等同于:"12"+"3"+4 = "123"+4 = "1234"。
2.
4 + 3 + 2 + "1"
10
4321
91
答案:91,优先级同上,从左往右,等同于:7+2+"1" = 9+"1" = "91"。
3.
1
10
Function
undefined
Error
答案:1,function的定义会提前到当前作用域之前,所以等同于:
所以,在foo=10的时候,foo是有定义的,属于局部变量,影响不到外层的foo。
4.
number
function
undefined
Error
答案:function,与上题类似,等同于:
在return之后声明和赋值的foo都无效,所以返回了function。
5.
1,2
1,3
2,1
2,3
3,1
3,2
答案:3,1 this指向执行时刻的作用域,go的作用域是全局,所以相当于window,取到的就是window.x,也就是var x=3;这里定义的x。而foo.baz.bar()里面,this指向foo.baz,所以取到的是这个上面的x,也就是1。
6.
1
2
3
4
undefined
答案:4,不管有这个setTimeout还是把这个函数立即执行,它里面这个function都是孤立的,this只能是全局的window,即使不延时,改成立即执行结果同样是4。
7.
1
2
undefined
答案:2,这里主要问题是最外面x的定义,试试把x=1改成x={},结果会不同的。这是为什么呢?在把函数当作构造器使用的时候,如果手动返回了一个值,要看这个值是否简单类型,如果是,等同于不写返回,如果不是简单类型,得到的就是手动返回的值。如果,不手动写返回值,就会默认从原型创建一个对象用于返回。
8.
1
2
3
undefined
答案3,arguments取的是实参的个数,而foo.length取的是形参个数。
9.
function
object
undefined
答案:undefined,这种情况下bar的名字从外部不可见,那是不是这个名字别人就没法知道了呢?不是,toString就可以看到它,比如说alert(foo),可以看看能打出什么。
10.
1
2
3
undefined
答案:2,数组的原型是Object,所以可以像其他类型一样附加属性,不影响其固有性质。
11.
1
2
undefined
答案:2,实参可以直接从arguments数组中修改。
12.
number
undefined
object
Error
答案:number,foo.length是无法删除的,它在Function原型上,重点它的configurable是false。
0