码迷,mamicode.com
首页 > 编程语言 > 详细

javascript易错知识

时间:2016-06-11 00:47:17      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

1、在try-catch语句中,finally子句是可选的,当包含finally子句的时候,无论try还是catch语句中的return语句都会被忽略。所以,我们在使用finally子句的时候,要想清楚我们希望代码如何执行。

 function fn () {
     try {
         a++;
     }
     catch(error) {
         console.log("in catch");
         return;
     }
     finally {
         console.log("in finally");
     }
 } 

 fn();   // in catch   in finally

2、jvascript中void是一个操作符,该操作符指定要计算一个表达式并且返回undefined。譬如underscore中就用void 0代替undefined。

3、undefined 并不是保留词(reserved word),它只是全局对象的一个属性,在低版本 IE 中能被重写。所以直接使用undefined可能是不靠谱的。那么如何保证能保证取到undefined的值呢?可以采用如下两种方案:

jquery版:

(function( window, undefined ) {
    //...
})( window );

这样写的优势:

  • window和undefined都是为了减少变量查找所经过的scope作用域。当window通过传递给闭包内部之后,在闭包内部使用它的时候,可以把它当成一个局部变量,显然比原先在window scope下查找的时候要快一些。(原来的window处于作用域链的最顶端,查找速度慢)
  • 在jquery压缩版本jquery.min.js中可以将局部变量window替换成单个字母,减小文件大小,提高加载速度技术分享
  • 将undefined作为参数传递给闭包,因为没给它传递值,它的值就是undefined。所以可以得到确切的undefined。

underscore版:

_.isUndefined = function(obj) {
    return obj === void 0;
}

4、

 

javascript易错知识

标签:

原文地址:http://www.cnblogs.com/MarcoHan/p/5397280.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!