面试题目

 
 
JavaScript中if语句求值其实使用eval函数,eval(function f(){}) 返回 function f(){} 也就是 true。
 
写一个mul函数,使用方法如下。
console.log(mul(2)(3)(4)); // output : 24 
console.log(mul(4)(3)(4)); // output : 48
答案直接给出:
 
 
怎么判断一个object是否是数组(array)?
方法1
使用 Object.prototype.toString 来判断是否是数组
 
 
 
 
这里使用call来使 toString 中 this 指向 obj。进而完成判断
 
方法二
使用 原型链 来完成判断
 
 
 
 
基本思想是利用 实例如果是某个构造函数构造出来的那么 它的 __proto__是指向构造函数的 prototype属性。
 
 
什么是 undefined x 1 ?
 
在chrome下执行如下代码,我们就可以看到undefined x 1的身影。
 
 
 
 
  注意:delete操作符并不是影响数组的长度
当我们使用 delete 操作符删除一个数组中的元素,这个元素的位置就会变成一个占位符。打印出来就是undefined x 1
注意如果我们使用trees[3] === 'undefined × 1'返回的是 false。因为它仅仅是一种打印表示,并不是值变为undefined x 1
 
 
下面代码输出什么?
 
 
 
 
输出是 undefined。js中赋值操作结合律是右至左的 ,即从最右边开始计算值赋值给左边的变量。
 
什么是 instanceof 操作符?下面代码输出什么?
 

下面代码输出什么?

 

 
 
Arguments对象是活动对象的一个属性,它包括如下属性:

 

callee — 指向当前函数的引用
length — 真正传递的参数个数
properties-indexes (字符串类型的整数) 属性的值就是函数的参数值(按参数列表从左到右排列)。 properties-indexes内部元素的个数等于arguments.length. properties-indexes 的值和实际传递进来的参数之间是共享的。
这个共享其实不是真正的共享一个内存地址,而是2个不同的内存地址,使用JavaScript引擎来保证2个值是随时一样的,当然这也有一个前提,那就是这个索引值要小于你传入的参数个数,也就是说如果你只传入2个参数,而还继续使用arguments[2]赋值的话,就会不一致;
 
 
 
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

posted @ 2018-03-23 13:49  paopaolee  阅读(110)  评论(0编辑  收藏  举报