六道JS面试题

xiaoxiao2021-02-28  99

1.创建JS对象的两种方法?

var o1 = {}; var o2 = new object;

2.如何创建数组?

var a1 = []; var a2 = new Array;

3.什么是变量提升?

无论在哪一个范围内,哪个位置声明的变量,JS引擎都会将这个声明移 动到作用域范围的顶部.

例子:

var a = 0; function foo(){ if(false){ var a = 2; } console.log(a);//undefined }

这段代码等于:

var a = 0; function foo(){ var a; if(false){ a = 2; } console.log(a); }

4.全局变量有什么风险,以及如何保护代码不受干扰?

风险是:污染命名空间,也就是说其他人或者自己可能创建相同名称的变量,然后覆盖了正在使用的变量.

预防方法:

i.使用命名空间

var namespace = {}; namespace.myVariable = 'abc';

ii.使用立即执行函数进行封装

(function(){ var a = 'abc'; })();

5.如何通过JS对象中的成员变量迭代

for(var property in obj){ if(obj.hasOwnProperty(property)){ //do something here } }

6.什么是闭包?

闭包是有权限访问另外一个函数作用域变量的函数.闭包可以保持值的状态,比如说一些迭代值的当前值.

function foo(){ var result = [],i; for(i = 0; i < 3; i++){ result[i] = function(){ return i; } } return result; } var result = foo(); result[0]();//3 result[1]();//3 result[2]();//3
转载请注明原文地址: https://www.6miu.com/read-44756.html

最新回复(0)