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