概述
简单记一下方便自己以后看看
#参考
【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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复