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
 })();
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值