js作用域与原型的笔试题
百度笔试有题如下:
1 . Array.isArray(Array.prototype)输出什么? true
在控制台上输出可以看到: Array.prototype -> [] Array.__proto__ ->function(){} 原理:
-
Array.prototype是Array构造函数实例的原型,构造函数实例化后仍为数组,所以输出true Array.__proto__是原型链的表示,指向当前Array的原型,所以必然不是数组,输出false
注意:
var a=new Array(2); console.log(a); //[undefined×2] var b=new String(2); console.log(b);//String { 0: "2", length: 1, [[PrimitiveValue]]: "2"} 对象
2 . 如下代码输出什么? 3
var a=3; function c(){ alert(a); } (function(){ var a=4; c(); })();
原理:
js中变量的作用域链与定义时的环境有关,与执行时无关。执行环境只会改变this、传递的参数、全局变量等
这里如果要输出4,可以利用参数的传递,如:
var a=3; function c(a){ alert(a); } (function(){ var a=4; c(a); //4 })();
上一篇:
Java基础知识总结(2021版)