1.创建JavaScript对象的两种方法是什么?
•使用“new”关键字来调用函数。
•open/close花括号。
1.var o ={};
什么情况下使用new关键字创建对象?”
2.如何创建数组?
1.var myArray =new Array();
2.var myArray =[];
如何高效地删除JavaScript数组中的重复元素?
3.什么是变量提升(Variable Hoisting)?
变量提升指的是,无论变量是在范围内的哪个地方声明的,JavaScript引擎都会将这个声明移到该范围的顶部。
如果在函数中间声明一个变量,例如在某一行中赋值一个变量:
function foo()
{
// 此处省略若干代码
var a ="abc";
}
实际上会这样运行代码:
function foo()
{
var a;
// 此处省略若干代码
a ="abc";
}
4.全局变量有什么风险,以及如何保护代码不受干扰?全局变量的危险之处在于其他人可以创建相同名称的变量,然后覆盖你正在使用的变量。
这在任何语言中都是一个令人头疼的问题。
预防的方法也有很多。其中最常用的方法是创建一个包含其他所有变量的全局变量:
var applicationName ={};
然后,每当你需要创建一个全局变量的时候,将其附加到对象上即可。 applicationName.myVariable ="abc";
还有一种方法是将所有的代码封装到一个自动执行的函数中,这样一来,所有声明的变量都声明在该函数的范围内。
<span style="font-size:18px;"> (function(){
var a ="abc";
})();</span>
在现实中,这两种方法你可能都会用到。
5.如何迭代JavaScript对象的成员变量?
for(var prop in obj){
// bonus points for hasOwnProperty
if(obj.hasOwnProperty(prop)){
// do something here
}
}
6.什么是闭包(Closure)?
闭包允许一个函数定义在另一个外部函数的作用域内,即便作用域内的其他东西都消失了,它仍可以访问该外部函数内的变量。
在for/next循环中使用闭包却不声明变量来保存迭代变量当前值的一些风险,那就应该给对方加分。
7.请描述你经历过的JavaScript单元测试。