JavaScript基础之五(return,with,'use strict')

1.return语句

  基本只能存在function里面,return后面如果不跟任何表达式,则相当于返回undefined(return undefined;)

2.width语句:不建议使用,使用strict模式,很难优化,效率低。使用方式如下:

    with(document) {
        var div1 = getElementById('div1');
    }

    var div2 = document.getElementById('div2');

3.debugger:断点标志

4.'use strict':设置在最前面,以下代码都会遵守strict模式。如果'use strict'写在代码中间位置,会被忽略为一个字符串而已。

    function Aaa(){
        console.log(this);
    }
    Aaa();//Window {external: Object, chrome: Object, document: document, speechSynthesis: SpeechSynthesis, caches: CacheStorage…}

    'use strict';//写在中间位置会被忽略
    function Bbb(){
        console.log(this);
    }
    Bbb();//Window {external: Object, chrome: Object, document: document, speechSynthesis: SpeechSynthesis, caches: CacheStorage…}

5.'use strict'与常规模式的区别

  1)strict模式禁止使用with语句

  2)strict模式下所有的变量需要声明  

    'use strict';
    a = 2;//抛出异常Uncaught ReferenceError: a is not defined

  3)strict模式下function的调用,this为undefined。常规下为window

    // function Aaa(){
    //     console.log(this);
    // }
    // Aaa();Aaa.apply();//Window {external: Object, chrome: Object, document: document, speechSynthesis: SpeechSynthesis, caches: CacheStorage…}

    'use strict';
    function Bbb(){
        console.log(this);
    }
    Bbb();Bbb.apply();//undefined

  4)strict模式下赋值给一个不可写的属性或给一个不可扩展的对象创建一个新属性会抛出异常TypeError。常规模式下不会拋异常,至少静默失败。

  5)strict模式下eval里面的变量和function不能在外面调用,常规模式下就可以

    'use strict';
    var code='var a=1;';
    eval(code);
    console.log(a);//Uncaught ReferenceError: a is not defined

  6)delete会在某些情况拋异常,常规下返回false

  7)当然strict模式和常规的模式的差异有很多,我自己实际的过程中也发现有些差异以及没有的,应该和浏览器的版本有关系。

6.关于label语句,可以给循环取一个名字,在break时,选择跳转的分支。这个其实相当于C#里面的goto了,不建议使用。

你可能感兴趣的:(JavaScript基础之五(return,with,'use strict'))