早已习惯在use strict模式下编写JavaScript代码,也知道它的一些约束,特性。今日在看视频时竟收获了几个原来不曾知道的特性。
首先科普下JavaScript的严格模式。
慕课网《JavaScript深入浅出》作者写道
严格模式是一种特殊的执行模式,
它修复了部分语言上的不足, 提供更强的错误检查,并增强安全性。
它修复了部分语言上的不足, 提供更强的错误检查,并增强安全性。
严格模式可使用在某个函数内部,也可使用在整个脚本中。开启严格模式的语法为‘use strict’。
function foo(){ 'use strict'; }
'use strict'; function foo(){ }
介绍就到这,如还未使用的伙伴可自行搜索:JavaScript 严格模式。
一.use strict前不可写var b;
我知道在定义'use strict'前仍可写代码(即无需写在代码的第一行),但不知道在'use strict'前输入
var a;
类似代码,则不行。
二.use strict下,不允许有8进制数。
function foo(){ 'use strict'; console.log(0321); }
以上代码,则会报错。Uncaught SyntaxError: Octal literals are not allowed in strict mode.
三.use strict下,eval、arguments成了关键字,不能作为变量函数名。
function f(){ 'use strict'; function eval(){ console.log(eval); } }
以上代码,依旧会报错。Uncaught SyntaxError: Unexpected eval or arguments in strict mode
四.use strict下,eval变成了独立作用域
!function(){ "use strict"; eval('var evalVal=2;’); console.log(typeof evalVal); //number }();
在一般模式下,在eval所在的函数内可得到evalVal,则会打印number;在 严格模式下eval中的代码会在独立作用域中执行,所以在外面evalVal则拿不到。即为undefined。
以上便是今日通过慕课网视频中学习而得。其外严格模式下还有很多限制,约束特性。如Bosn老师在PPT中写道的:
Bosn老师的PPT内容 写道
不允许用with
所有变量必须声明, 赋值给为声明的变量报错,而不是隐式创建全局变量。
eval中的代码不能创建eval所在作用域下的变量、函数。而是为eval单独创建一个作用域,并在eval返回时丢弃。
函数中得特殊对象arguments是静态副本,而不像非严格模式那样,修改arguments或修改参数变量会相互影响。
删除configurable=false的属性时报错,而不是忽略
禁止八进制字面量,如010 (八进制的8)
eval, arguments变为关键字,不可作为变量名、函数名等
一般函数调用时(不是对象的方法调用,也不使用apply/call/bind等修改this)this指向null,而不是全局对象。
若使用apply/call,当传入null或undefined时,this将指向null或undefined,而不是全局对象。
试图修改不可写属性(writable=false),在不可扩展的对象上添加属性时报TypeError,而不是忽略。
arguments.caller, arguments.callee被禁用
所有变量必须声明, 赋值给为声明的变量报错,而不是隐式创建全局变量。
eval中的代码不能创建eval所在作用域下的变量、函数。而是为eval单独创建一个作用域,并在eval返回时丢弃。
函数中得特殊对象arguments是静态副本,而不像非严格模式那样,修改arguments或修改参数变量会相互影响。
删除configurable=false的属性时报错,而不是忽略
禁止八进制字面量,如010 (八进制的8)
eval, arguments变为关键字,不可作为变量名、函数名等
一般函数调用时(不是对象的方法调用,也不使用apply/call/bind等修改this)this指向null,而不是全局对象。
若使用apply/call,当传入null或undefined时,this将指向null或undefined,而不是全局对象。
试图修改不可写属性(writable=false),在不可扩展的对象上添加属性时报TypeError,而不是忽略。
arguments.caller, arguments.callee被禁用
其中一些早已用熟,此处便未贴上代码解释。
最后,严格模式的向上兼容的。
相关推荐
在JavaScript的世界里,"use strict" 是一个非常重要的指令,用于启用ECMAScript规范中的严格模式。严格模式是一种更安全、更严格的JavaScript执行环境,它旨在消除语法错误,避免一些意外的行为,并强制开发者遵循...
严格模式:由ECMA-262规范定义的JavaScript标准,对javascrip的限制更强。 (非严格的模式,被称为“马虎模式/稀松模式/懒散模式”。) 一、严格模式的使用 严格模式可以在脚本或函数级别实现。(即全局和局部模式)...
JavaScript 严格模式(use strict) JavaScript 严格模式(strict mode)即在严格的条件下运行。 使用 “use strict” 指令 “use strict” 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。 它不是一条语句,但是是...
JavaScript 严格模式 (`use strict`) 是一种特殊执行模式,它强化了语言的规则,提高了代码质量和安全性。在严格模式下,JavaScript 引擎会执行更严格的解析和执行,旨在暴露和防止潜在的错误,同时也禁用了某些可能...
在JavaScript的世界里,“use strict”是一个非常重要的指令,它标志着代码应当在严格模式下执行。严格模式是ECMAScript 5引入的一种新的运行模式,旨在提高编译效率,减少错误,并帮助开发者编写更安全、更可靠的...
10. **严格模式**:使用`'use strict'`启用严格模式,可以捕获某些潜在错误,并强制执行更严格的代码编写规范。 11. **ES6及以后的新特性**:包括箭头函数、模板字符串、解构赋值、Promise、async/await等,这些新...
这篇文章涵盖了JavaScript的多个方面,包括eval函数、window和document对象、null和undefined的区别、数组的map方法、事件机制、use strict模式等。 eval函数 eval函数可以将字符串解析成JS代码并执行。但是,eval...
use strict是严格模式的标识,它可以通过在脚本文件或函数首行添加"use strict";来启用。在引入严格模式时,JavaScript还废除了with语句。with语句的作用在于,它会为一段代码设定一个默认的对象,之后代码块内的...
"strict mode"(严格模式)是JavaScript中一个非常重要的概念,它改变了代码的执行方式,使得代码更加安全、可靠,并且有助于发现潜在的问题。在前端开源库中启用严格模式,可以显著提升代码质量和维护性。 严格...
例如,如果您尝试在Node.js 4中使用let语句,那么如果JavaScript文件没有“ use strict”,则会看到此错误: SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside ...
Canvas当前仅在chrome中使用“ use strict”) 例子: var id = 'myCanvas'; // id of canvas to which bind class var c = new Canvas(id); // crate new instance for canvas to use // Canvas is chainable ...
这个文档可能会详细介绍新增的语法特性,如严格模式(use strict)、对象字面量的属性简写、数组和对象的扩展操作符等,还有对JSON(JavaScript Object Notation)的支持,以及函数参数的默认值、解构赋值等高级用法...
在JavaScript代码中启用严格模式非常简单,只需要在代码顶部添加`'use strict';`即可。 **不推荐的写法**: ```javascript // 脚本开始 'use strict'; (function () { // 你的代码从这里开始 }); ``` **推荐的...
文档首先介绍了JavaScript的基础知识,如现代模式的使用,以及`use strict`指令,这个指令用于启用严格模式,帮助开发者写出更好的JavaScript代码。 紧接着介绍了基本的编程元素,包括: - 代码结构,如变量声明和...
启用严格模式非常简单,只需在脚本或函数的开始处添加`"use strict";`指令即可。 ##### 3.1 全局范围内启用 在脚本的顶部添加`"use strict";`,可以使整个脚本文件在严格模式下运行。 ```javascript "use strict";...
1. **严格模式**:ES5引入了“use strict”指令,允许开发者启用严格模式,这是一种更严格的代码执行模式,它可以检测并防止一些常见的编程错误,如未声明的变量、删除全局变量等。 2. **对象属性的访问器**:在ES5...
此外,严格模式('use strict')有助于开发者编写更安全、更少错误的代码。 总之,JavaScript作为Web开发不可或缺的一部分,从基础语法到高级特性,从DOM操作到异步编程,都有深入研究的价值。这份“JavaScript基础...
ECMAScript 5是JavaScript的核心标准,于2009年发布,引入了许多新特性,如严格模式('use strict')、对象字面量的getter和setter、JSON支持以及数组和对象的方法扩展等。学习这部分内容,你将了解到如何利用这些...