ES5下javascript的严格模式
2021/5/18 14:28:01
本文主要是介绍ES5下javascript的严格模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
ES5的严格模式
为什么要设立严格模式
- 消除javascript语法不合理、不严谨的地方,减少一些怪异行为
- 保证代码运行安全
- 提高编译效率,增加运行速度
严格模式使用方法
1.全局
“Use strtic” n=10; console.log(n);
2.局部
function fn(){ “Use strtic”; n=10; console.log(n); }
严格模式规则
1. 不可以省略var声明变量
function show() { "use strict"; var a = uname = "刘德华"; console.log(uname); }
报错: uname变量没有声明
2. 禁止函数使用this指向全局变量
非严格模式函数内的this指向window,严格模式下this指向undefine
此处补充一下几种场景下this的指向
函数内部的this指向window,严格模式下指向undefine
事件绑定的this默认指向当前被绑定的元素
this在对象的函数里默认指向当前对象
this在箭头函数中默认指向上下文对象
构造函数有显示返回值且该值是对象时,this指向这个这个对象;
如果返回的不是对象或者没有返回值时,this指向实例。
定时器内的this指向window,因为定时器方法时定义在window下的
3. 禁止函数内使用八进制方法
这个不必多说
4. 不允许在非函数的代码块内声明函数
“use strict" if (true) { function fn4() { console.log(111) } }
会报错Octal literals are not allowed in strict mode.
5. 严格模式下arguments变量与形参不再同步
不使用严格模式:
function fn5(num){ num=20; console.log(arguments[0]); console.log(num); } fn5(10);//20,20
使用严格模式改变形参:
function fn5(num){ "use strict"; num=20; console.log(arguments[0]); console.log(num); } fn5(10);//10,20
使用严格模式改变arguments
function fn5(num){ "use strict"; arguments[0]=20; console.log(arguments[0]); console.log(num); } fn5(10);//20,10
这篇关于ES5下javascript的严格模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)