牛客网Javascript专项练习错题汇总
字符串的拼接
console.log(1+ +"2"+"2"); console.log("A"- "B"+"2"); console.log("A"- "B"+2);
console.log(1+ +”2”+”2”)中的第一个加号表示的是一元加操作符,+”2”变成了正整数2,从而前面进行1+2+“2“,因此结果为32
console.log(“A”-“B”+”2”)中的减号两边的操作数需要先变成number类型的值,而A和B转换成number类型的值结果为NAN;因此”A”-“B”的值为NAN;然后将它与字符串”2”进行合并,从而变成了NAN
console.log(“A”-“B”+2)中前面的同上,也变成了NAN,而与2进行整数类型相加,因为NAN与数值进行任何操作都为NAN,因此结果仍然为NAN
js定义的结果
<script> function test(){ var a=b=1; }(); console.log(a); console.log(b); </script>
最终控制台打印的结果为:referenceerror 5
其中var a=b=1的含义为:首先在函数内部定义一个局部变量a,而在函数内部和全局范围中并没有变量b的定义,因此它会声明为全局变量来定义,而此时已经进行了a和b的赋值,因此输出a的时候就会报错:a is not defined;而b这时候成为了一个全局变量,他的值为5
这段代码可以写成:
<script> var b; function test(){ var a=b; b=1; }(); console.log(a); console.log(b); </script>
如何准确判断一个对象是否为Array对象?
判断一个对象的类型,常用两种方法,typeof和instanceof,而typof对于引用类型数据都是会返回object;instanceof可以准确判断一个对象是否是给定的类型,如 obj instanceof Array,可是这在跨frame对象构建的场景下会失效
可以通过prototype原型进行判断
Object.prototype.toString.call(arr) === [object Array];
具体参考文档:http://www.nowamagic.net/librarys/veda/detail/1250
上一篇:
Java基础知识总结(2021版)
下一篇:
java 考察引用的一个例子