问题1:JavaScript 中undefined和not defined的区别JavaScript 未声明变量直接使用会抛出异常:var name is not defined,如果没有处理异常,代码就停止运行了。
问题2:下面的代码输出什么?正确的答案应该是1undefined。 JavaScript中if语句求值其实使用eval函数,eval(function f(){})返回function f(){}也就是true。 下面我们可以把代码改造下,变成其等效代码。 上面的代码输出其实就是1undefined。为什么那?我们查看下eval()说明文档即可获得答案 恰恰function f(){}语句的返回值是undefined,所以一切都说通了。 注意上面代码和以下代码不同。 问题3:在JavaScript中创建一个真正的private方法有什么缺点?每一个对象都会创建一个private方法的方法,这样很耗费内存 观察下面代码 在这里 emp1,emp2,emp3都有一个increaseSalary私有方法的副本。 所以我们除非必要,非常不推荐使用私有方法。 问题4:JavaScript中什么是闭包?写出一个例子老生常谈的问题了,闭包是在一个函数里声明了另外一个函数,并且这个函数访问了父函数作用域里的变量。 下面给出一个闭包例子,它访问了三个域的变量: 它自己作用域的变量 父函数作用域的变量 全局作用域的变量
问题5:写一个mul函数,使用方法如下。答案直接给出:
简单说明下: mul 返回一个匿名函数,运行这个匿名函数又返回一个匿名函数,最里面的匿名函数可以访问 x,y,z 进而算出乘积返回即可。 对于JavaScript中的函数一般可以考察如下知识点: 函数是一等公民 函数可以有属性,并且能连接到它的构造方法 函数可以像一个变量一样存在内存中 函数可以当做参数传给其他函数 函数可以返回其他函数 问题6:JavaScript怎么清空数组? 如 怎么清空arrayList 方法1直接改变arrayList所指向的对象,原对象并不改变。 方法2这种方法通过设置length=0 使原数组清除元素。 方法3和方法2相似 问题7:怎么判断一个object是否是数组(array)?方法1使用 Object.prototype.toString 来判断是否是数组 这里使用call来使 toString 中 this 指向 obj。进而完成判断 方法二使用 原型链 来完成判断 基本思想是利用 实例如果是某个构造函数构造出来的那么 它的__proto__是指向构造函数的prototype属性。 方法3利用JQuery JQuery isArray 的实现其实就是方法1 问题8:下面代码输出什么?输出是0。delete操作符是将object的属性删去的操作。但是这里的x是并不是对象的属性,delete操作符并不能作用。 问题9:下面代码输出什么?输出是1。delete操作符是将object的属性删去的操作。但是这里的x是并不是对象的属性,delete操作符并不能作用。 问题10:下面代码输出什么?输出是undefined。x虽然是全局变量,但是它是一个object。delete作用在x.foo上,成功的将x.foo删去。所以返回undefined 问题11:下面代码输出什么?输出是xyz,这里的 emp1 通过 prototype 继承了 Employee的 company。emp1自己并没有company属性。所以delete操作符的作用是无效的。 问题12:什么是undefined x 1?在chrome下执行如下代码,我们就可以看到undefined x 1的身影。 当我们使用 delete 操作符删除一个数组中的元素,这个元素的位置就会变成一个占位符。打印出来就是undefined x 1。
问题13:下面代码输出什么?输出是5。因为delete操作符并不是影响数组的长度。 问题14:下面代码输出什么?输出是:
下面给出一个加法操作表 Number Number - |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|