1

1

1

Javascript 严格模式("use strict";)详细解解

"use strict";定义JavaScript代码应该在"strict mode"下被执行。

"use strict"指令是JavaScript 1.8.5 (ECMAScript的第5版)新增的。

这不是一个声明,而是一个字面量表达,会被早期版本的JavaScript忽略掉。

"use strict"的目的是为了指明代码应该在"strict mode"下被执行。

1

1

http://www.w3schools.com/js/js_strict.asp

# Javascript 严格模式("use strict";)详解

## [http://www.w3schools.com/js/js_strict.asp](http://www.w3schools.com/js/js_strict.asp)

```code
"use strict";定义JavaScript代码应该在"strict mode"下被执行。

"use strict"指令是JavaScript 1.8.5 (ECMAScript的第5版)新增的。

这不是一个声明,而是一个字面量表达,会被早期版本的JavaScript忽略掉。

"use strict"的目的是为了指明代码应该在"strict mode"下被执行。

例如,在"strict mode"下,你不能使用未被声明的变量。
``` 
### 声明严格模式
严格模式的声明是通过将"use strict";添加到一个脚本或一个函数的开头位置来实现的。

```js
"use strict";
x = 3.14;       
// 这将会产生一个错误,因为x是未被声明的。

"use strict";
myFunction();

function myFunction() {
    y = 3.14;
    // 这将会产生一个错误,因为y是未被声明的。
}
``` 

### 在一个函数内部中声明 "use strict";,它具有局部作用域(只在函数内部的代码是执行在严格模式下)

```js
x = 3.14;       
// 这将会产生一个错误,因为x是未被声明的。
myFunction();

function myFunction() {
   "use strict";
    y = 3.14;   
    // 这将会产生一个错误,因为y是未被声明的。
}
``` 

## 为什么要使用严格模式?

声明严格模式的语法,被设计是为了兼容旧版本的JavaScript。

严格模式可以更容易地编写“安全”的JavaScript。

严格模式将以前被接受的“错误语法”改变为真正的错误。

例如,
在标准的JavaScript中,错误输入一个变量名会创建一个新的全局变量。
在严格模式下,这将抛出一个错误,这使得意外地创建一个全局变量成为不可能。

在标准的JavaScript,开发人员将不会收到任何错误反馈,赋值给非可写的属性。
在严格模式下,赋值给任何:一个非可写的属性,一个只读的属性,一个不存在的属性,
一个不存在的变量,或一个不存在的对象,都将抛出一个错误。

面向未来! 
未来保留的关键字在严格模式是不允许的。
implements
interface
let
package
private
protected
public
static
yield

# 小心!

"use strict"指令只能在一个脚本或一个函数的开头被识别。

1

1

demo:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Javascript 严格模式.html</title>
</head>
<body>
<div>
<h1>Javascript 严格模式.html</h1>
</div>
<pre>
<!-- -->
</pre>
<script>
/*
"use strict";
x = 3.14;
// x is not defined "use strict";
myFunction();
function myFunction() {
y = 3.14;
// 这将会产生一个错误,因为y是未被声明的。
}; myFunction();
function myFunction() {
"use strict";
y = 3.14;
// y is not defined
}
*/
/*
"use strict";
var x = 3.14;
delete x;
// Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.
"use strict";
function x(p1, p2) {};
delete x;
// Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.(不合格的标识符不允许)
*/
/*
"use strict";
var x = 010;
// Uncaught SyntaxError: Octal literals are not allowed in strict mode. (八进制字面量不允许)
"use strict";
var x = \010;
// Uncaught SyntaxError: Invalid or unexpected token(转义字符不允许)
*/
/*
"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14;
//写入只读属性是不允许的:
"use strict";
var obj = {get x() {return 0} };
obj.x = 3.14;
//写入get-only(只能获得)属性是不允许的:
"use strict";
delete Object.prototype;
//删除一个不可删除的属性是不允许的:
"use strict";
var eval = 3.14;
//字符串“eval”不能用作变量:
"use strict";
var arguments = 3.14;
// 字符串“arguments”不能用作变量:
"use strict";
with (Math){x = cos(2)};
// with语句是不允许的
"use strict";
eval ("var x = 2");
alert (x);
// 出于安全的原因,在eval()被调用的作用域内,是不允许它创建变量的!
"use strict";
var public = 1500;
// 未来保留的关键字在严格模式是不允许的。
*/
</script>
</body>
</html>

1

1

1

1

1

1

1

1

1

1

1

Javascript 严格模式("use strict";)详细解解

"use strict";定义JavaScript代码应该在"strict mode"下被执行。

"use strict"指令是JavaScript 1.8.5 (ECMAScript的第5版)新增的。

这不是一个声明,而是一个字面量表达,会被早期版本的JavaScript忽略掉。

"use strict"的目的是为了指明代码应该在"strict mode"下被执行。

1

1

http://www.w3schools.com/js/js_strict.asp

# Javascript 严格模式("use strict";)详解

## [http://www.w3schools.com/js/js_strict.asp](http://www.w3schools.com/js/js_strict.asp)

```code
"use strict";定义JavaScript代码应该在"strict mode"下被执行。

"use strict"指令是JavaScript 1.8.5 (ECMAScript的第5版)新增的。

这不是一个声明,而是一个字面量表达,会被早期版本的JavaScript忽略掉。

"use strict"的目的是为了指明代码应该在"strict mode"下被执行。

例如,在"strict mode"下,你不能使用未被声明的变量。
``` 
### 声明严格模式
严格模式的声明是通过将"use strict";添加到一个脚本或一个函数的开头位置来实现的。

```js
"use strict";
x = 3.14;       
// 这将会产生一个错误,因为x是未被声明的。

"use strict";
myFunction();

function myFunction() {
    y = 3.14;
    // 这将会产生一个错误,因为y是未被声明的。
}
``` 

### 在一个函数内部中声明 "use strict";,它具有局部作用域(只在函数内部的代码是执行在严格模式下)

```js
x = 3.14;       
// 这将会产生一个错误,因为x是未被声明的。
myFunction();

function myFunction() {
   "use strict";
    y = 3.14;   
    // 这将会产生一个错误,因为y是未被声明的。
}
``` 

## 为什么要使用严格模式?

声明严格模式的语法,被设计是为了兼容旧版本的JavaScript。

严格模式可以更容易地编写“安全”的JavaScript。

严格模式将以前被接受的“错误语法”改变为真正的错误。

例如,
在标准的JavaScript中,错误输入一个变量名会创建一个新的全局变量。
在严格模式下,这将抛出一个错误,这使得意外地创建一个全局变量成为不可能。

在标准的JavaScript,开发人员将不会收到任何错误反馈,赋值给非可写的属性。
在严格模式下,赋值给任何:一个非可写的属性,一个只读的属性,一个不存在的属性,
一个不存在的变量,或一个不存在的对象,都将抛出一个错误。

面向未来! 
未来保留的关键字在严格模式是不允许的。
implements
interface
let
package
private
protected
public
static
yield

# 小心!

"use strict"指令只能在一个脚本或一个函数的开头被识别。

1

1

demo:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Javascript 严格模式.html</title>
</head>
<body>
<div>
<h1>Javascript 严格模式.html</h1>
</div>
<pre>
<!-- -->
</pre>
<script>
/*
"use strict";
x = 3.14;
// x is not defined "use strict";
myFunction();
function myFunction() {
y = 3.14;
// 这将会产生一个错误,因为y是未被声明的。
}; myFunction();
function myFunction() {
"use strict";
y = 3.14;
// y is not defined
}
*/
/*
"use strict";
var x = 3.14;
delete x;
// Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.
"use strict";
function x(p1, p2) {};
delete x;
// Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.(不合格的标识符不允许)
*/
/*
"use strict";
var x = 010;
// Uncaught SyntaxError: Octal literals are not allowed in strict mode. (八进制字面量不允许)
"use strict";
var x = \010;
// Uncaught SyntaxError: Invalid or unexpected token(转义字符不允许)
*/
/*
"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14;
//写入只读属性是不允许的:
"use strict";
var obj = {get x() {return 0} };
obj.x = 3.14;
//写入get-only(只能获得)属性是不允许的:
"use strict";
delete Object.prototype;
//删除一个不可删除的属性是不允许的:
"use strict";
var eval = 3.14;
//字符串“eval”不能用作变量:
"use strict";
var arguments = 3.14;
// 字符串“arguments”不能用作变量:
"use strict";
with (Math){x = cos(2)};
// with语句是不允许的
"use strict";
eval ("var x = 2");
alert (x);
// 出于安全的原因,在eval()被调用的作用域内,是不允许它创建变量的!
"use strict";
var public = 1500;
// 未来保留的关键字在严格模式是不允许的。
*/
</script>
</body>
</html>

1

1

1

1

1

1

1

1

Javascript 严格模式("use strict";)详细解解的更多相关文章

  1. Javascript 严格模式use strict

    一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:“严格模式”(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. 设立”严格模式”的目 ...

  2. Javascript 严格模式use strict详解

    1.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. ...

  3. JavaScript进阶【二】JavaScript 严格模式(use strict)的使用

    /*** *使用严格模式的原因: * ①:消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; ②:消除代码运行的一些不安全之处,保证代码运行的安全: ③:提高编译器效率,增加运行 ...

  4. 【JS】312- 复习 JavaScript 严格模式(Strict Mode)

    点击上方"前端自习课"关注,学习起来~ 注:本文为 < JavaScript 完全手册(2018版) >第30节,你可以查看该手册的完整目录. 严格模式是一项 ES5 ...

  5. JavaScript 严格模式(use strict)

    前言: "use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增. 它不是一条语句,但是是一个字面量表达式,在 JavaScript ...

  6. 浅谈JavaScript严格模式(use strict)

    "use strict" 的目的是指定代码在严格条件下执行. 严格模式下你不能使用未声明的变量. 严格模式声明 严格模式通过在脚本或函数的头部添加 "use strict ...

  7. Javascript 严格模式(strict mode)详解

    Javascript 严格模式详解   一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Ja ...

  8. Javascript 严格模式 strict mode(转)

    一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. ...

  9. JavaScript严谨模式(Strict Mode)

    下面的内容翻译自It’s time to start using JavaScript strict mode,作者Nicholas C.Zakas参与了YUI框架的开发,并撰写了多本前端技术书籍,在 ...

随机推荐

  1. CODING 再携手腾讯云 Serverless,让开发者跑步上云

    近年来,腾讯云持续在云原生领域打磨和完善产品矩阵,致力于为开发者上云提供更好的产品和服务.继前段时间 CODING CI 助力腾讯云 Serverless 全新应用控制台.持续保障 Serverles ...

  2. 关于Java客户端连接虚拟机中的Kafka时,无法发送、接收消息的问题

    kafka通过控制台模拟消息发送和消息接收正常,但是通过javaAPI操作生产者发送消息不成功 消费者接收不到数据解决方案? 1.问题排查 (1)首先通过在服务器上使用命令行来模拟生产.消费数据,发现 ...

  3. Lua大量字符串拼接方式效率对比及原因分析

    Lua大量字符串拼接方式效率对比及原因分析_AaronChan的博客-CSDN博客_lua字符串拼接消耗 https://blog.csdn.net/qq_26958473/article/detai ...

  4. redis list 列表 查找 时间复杂度

    http://redisbook.com/preview/intset/content.html 列表对象 列表对象的编码可以是 ziplist 或者 linkedlist . ziplistFind ...

  5. CSP2020-S游记

    写在前面 Q:按照惯例是不是要写一片游记啊? A:好像是吧.. Q:都爆零了还有脸写游记? A:再不写今年就没机会了啊 Q:-- 我不要脸 Day -?? 某二区学长毒奶:去年三棵树,今年六张图 Da ...

  6. 强连通分量 与 2-SAT

    近期一直在刷这方面的题 因为没法学新知识 但又想写点什么 就水篇博文吧 引理 简单来说,在一个有向图中,若所有点之间两两互相直接可达,则将这个图成为强连通分量 强连通分量可以是某个有向图中的子图 求强 ...

  7. Linux 文件搜索神器 find 实战详解,建议收藏!

    大家好,我是肖邦,这是我的第 10 篇原创文章. 在 Linux 系统使用中,作为一个管理员,我希望能查找系统中所有的大小超过 200M 文件,查看近 7 天系统中哪些文件被修改过,找出所有子目录中的 ...

  8. (Linux环境Kafka集群安装配置及常用命令

    Linux环境Kafka集群安装配置及常用命令 Kafka 消息队列内部实现原理 Kafka架构 一.下载Kafka安装包 二.Kafka安装包的解压 三.设置环境变量 四.配置kafka文件 4.1 ...

  9. CS229 Lecture 01

    CS229 Lecture notes 01 机器学习课程主要分为4部分:监督学习:学习理论:无监督学习:增强学习. $x^{(i)}$表示特征,$y^{(i)}$表示目标,$i=1...m$.m是训 ...

  10. sql 工具类function

    --判断是否为整数 create or replace function is_number(param VARCHAR2) return NUMBER is v_num NUMBER; begin ...