第1部分,JS核心技术测试
1. 如下代码输出的结果是什么
console.log(1+ "2"+"2");//1
console.log(1+ +"2"+"2");//2
console.log("A"- "B"+"2");//3
console.log("A"- "B"+2);//4
A.122 122 NaN NaN
B.122 32 NaN NaN2
C.122 32 NaN2 NaN
D.122 32 NaN2 NaN2
解析:C
字符串的拼接,+一侧出现字符串为拼接,3,4字符串隐式转数字为NaN,NaN加任何数都为 NaN
单目运算符:其他类型转成数字
双目运算符: 优先考虑字符串拼接
2. 声明一个对象,给它加上 name 属性和 show 方法显示其 name 属性值,以下代码中正确的是()
A.var obj = [name:"zhangsan",show:function(){alert(name);}];
B.var obj = {name: ' zhangsan' ,show:' alert(this.name)'};
C.var obj = {name: ' zhangsan' ,show:function(){alert(name);}};
D.var obj = {name:' zhangsan',show:function(){alert(this.name);}};
解析:D
A:应该为花括号,B:在普通方法调用中this指向全局无法显示,C:name沿作用域往上找为全局,全局有一个name为空所以显示空而不是报错。
3. 请选择结果为真的表达式: ()
A.null instanceof Object
B.null === undefined
C.null == undefined
D.NaN === NaN
解析:D
A:查看左边对象是否是右边的构造函数实例出来的对象,B:===比较的是数据类型和数 值,D:NaN和任何数都不等包括它自身
4. var arr=[a,b,c,d];数组arr中元素都是整数,下面能得到最大整数的是?
A、Math.max(arr) //NaN
B、Math.max(arr[0], arr[1], arr[2], arr[3])
C、Math.max.call(Math, arr[0], arr[1], arr[2], arr[3])
D、Math.max.apply(Math,arr)
解析:BCD
Math方法的使用A:NaN 数组不能比要散的数据, B:基本用法
C:第一个参this指向,与B类似, D:Math.max.apply(Math,[]) 第一个参this指向
修改this指向 call直接传参 apply需打包为对象 bind需自己调用
1call----->.obj.say.call(obj2,18,”boy”)
2apply----->.obj.say.apply(obj2,[18,”boy”])
3bind----->.obj.say.bind(obj2,18,”boy