10004---7 个去伪存真的 JavaScript 面试题



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单元测试。


原文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值