我是靠谱客的博主 有魅力日记本,最近开发中收集的这篇文章主要介绍JavaScript with()用法 严格模式 let,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简单记一下方便自己以后看看

#参考

【1】 Ben Chan js-with用法 https://www.cnblogs.com/benchan2015/p/5057314.html
【2】 阮一峰 Javascript 严格模式详解 http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
【3】 nfer_cn js中let和var定义变量的区别 https://blog.csdn.net/nfer_zhuang/article/details/48781671

#with    在with的范围内可直接使用对象的属性

var a = {};
a.name = 'jojo';
a.stand = 'star platinum';
with(a){
    console.log(name);
    console.log(stand);
}

#严格模式

通过添加 “use strict”;来进入严格模式,在脚本第一行加就整个脚本进入,在函数第一行加就函数进入;

可以将整个脚本写入匿名函数来进入严格模式,利于合并;

(function (){

    "use strict";

    // some code here

   })();

 作用:

1、在正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,全局变量必须显式声明。
2、禁止使用with语句
3、正常模式下,Javascript语言有两种变量作用域(scope):全局作用域和函数作用域。严格模式创设了第三种作用域:eval作用域。
正常模式下,eval语句的作用域,取决于它处于全局作用域,还是处于函数作用域。严格模式下,eval语句本身就是一个作用域,不再能够生成全局变量了,它所生成的变量只能用于eval内部。

    "use strict";

  var x = 2;

  console.info(eval("var x = 5; x")); // 5

  console.info(x); // 2

4、禁止this关键字指向全局对象,因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。

    function f(){

    "use strict";

    this.a = 1;

  };

  f();// 报错,this未定义

5、禁止在函数内部遍历调用栈

    function f1(){

    "use strict";

    f1.caller; // 报错

    f1.arguments; // 报错

  }

  f1();

6、严格模式下无法删除(delete)变量。只有configurable设置为true的对象属性,才能被删除。

7、显式报错
    正常模式下,对一个对象的只读属性进行赋值,不会报错,只会默默地失败。严格模式下,将报错。
    严格模式下,对一个使用getter方法读取的属性进行赋值,会报错。
    严格模式下,对禁止扩展的对象添加新属性,会报错。
    严格模式下,删除一个不可删除的属性,会报错。
8、重名错误
    对象不能有重名的属性
    函数不能有重名的参数
    禁止八进制表示法
9、arguments对象的限制
    不允许对arguments赋值
    arguments不再追踪参数的变化
    禁止使用arguments.callee
10、严格模式只允许在全局作用域或函数作用域的顶层声明函数。
11、新增保留字:implements, interface, let, package, private, protected, public, static, yield。

#let

在使用let前要进入严格模式

作用:

1、使用未声明的变量会报错
2、重复声明同一个变量会报错
3、作用范围
'use strict';

(function() {
  var varTest = 'test var OK.';
  let letTest = 'test let OK.';

  {
    var varTest = 'varTest changed.';
    let letTest = 'letTest changed.';
  }

  console.log(varTest); //输出"varTest changed.",内部"{}"中声明的varTest变量覆盖外部的letTest声明
  console.log(letTest); //输出"test let OK.",内部"{}"中声明的letTest和外部的letTest不是同一个变量
}());

 

#参考

【1】 Ben Chan js-with用法 https://www.cnblogs.com/benchan2015/p/5057314.html
【2】 阮一峰 Javascript 严格模式详解 http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
【3】 nfer_cn js中let和var定义变量的区别 https://blog.csdn.net/nfer_zhuang/article/details/48781671

 

最后

以上就是有魅力日记本为你收集整理的JavaScript with()用法 严格模式 let的全部内容,希望文章能够帮你解决JavaScript with()用法 严格模式 let所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部