百度笔试有题如下:

来源:互联网 发布:淘宝开车精灵好用吗 编辑:程序博客网 时间:2024/04/28 14:29


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"}  对象
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

2 . 如下代码输出什么? 3

 var a=3; function c(){    alert(a); } (function(){  var a=4;  c(); })();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

原理:

js中变量的作用域链与定义时的环境有关,与执行时无关。执行环境只会改变this、传递的参数、全局变量等

这里如果要输出4,可以利用参数的传递,如:

 var a=3; function c(a){    alert(a); } (function(){  var a=4;  c(a);  //4 })();
原创粉丝点击