关于js的严格模式
2024-10-21 19:05:37
最近在看你不知道js,补充自己的js基础,加深理解。在读的过程中写点笔记。
严格模式下与非严格模式的区别 。 严格模式是es5新增的,es6是默认为严格模式的!js默认状态下是非严格模式的!
一般的自动化构建工具如webpack,gulp也是开启了严格模式的!
1 严格模式下, delete运算符后跟随非法标识符(即delete 不存在的标识符),会抛出语法错误;非严格模式下,会静默失败并返回false
2 严格模式中,对象直接量中定义同名属性会抛出语法错误; 非严格模式不会报错
3 严格模式中,函数形参存在同名的,抛出错误; 非严格模式不会
4 严格模式不允许八进制整数直接量(如:023)
5 严格模式中,arguments对象是传入函数内实参列表的静态副本;非严格模式下,
arguments对象里的元素和对应的实参是指向同一个值的引用
6 严格模式中 eval和arguments当做关键字,它们不能被赋值和用作变量声明
7 严格模式会限制对调用栈的检测能力,访问arguments.callee.caller会抛出异常
8 严格模式 变量必须先声明,直接给变量赋值,不会隐式创建全局变量,不能用with,
9 严格模式中 call apply传入null undefined保持原样不被转换为window
测试是否为严格模式的函数。
原理是:严格模式下,函数内this并不会指向window,而是undefined.
正常情况下开启严格,只需在js头部声明 'use strict'
var hasStrictMode = function() {
"use strict";
return this === undefined
}
设立"严格模式"的目的,主要有以下几个:
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。
据说在大公司如果没用严格模式可能会罚款几百块哦。
最新文章
- phprpc的简单使用
- webkit.net 浏览器开发
- Spring.Net Remoting 相关使用
- word 批量修改表格格式
- 【PRML读书笔记-Chapter1-Introduction】引言
- linux:磁碟与档案系统管理
- unity jiaoben
- UVa 1595 (水题) Symmetry
- UIPickerView基本用法
- PE文件结构详解(五)延迟导入表
- 【windows核心编程】一个HOOK的例子
- paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置..
- windows lwp 乱码问题
- kiss框架学习
- Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
- Vulkan Tutorial 07 Window surface
- 在Swift项目中使用OC,在OC项目中使用Swift
- [Note] Stream Computing
- Spring Boot 2.x 编写 RESTful API (五) 单元测试
- jmeter使用指南:jmeter无脑式指南
热门文章
- MySQL · 引擎特性 · InnoDB index lock前世今生
- ubuntu 16.04安装后不能登入
- Windows Store 应用获得设备 ID 的几种方案
- 斗鱼扩展--DouyuRoom使用说明(十四)
- guava的重试机制guava-retrying使用
- intellijidea课程 intellijidea神器使用技巧1-4 idea安装
- PHP保存Base64图片base64_decode的问题
- 《ArcGIS Runtime SDK for Android开发笔记》——问题集:.geodatabase创建,创建时内容缺失问题总结
- System Center Configuration Manager 2016 配置安装篇(Part2)
- Spark master节点HA配置