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. Java SPI机制详解

    Java SPI机制详解 1.什么是SPI? SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制.SPI是一种动态替换发现的机制, 比如有个 ...

  2. Optimal asymmetric encryption padding 最优非对称加密填充(OAEP)

    SubtleCrypto.decrypt() - Web APIs | MDN https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypt ...

  3. Routine Subroutine Coroutine 子程序 协程 子例程

    https://en.wikipedia.org/wiki/Subroutine In computer programming, a subroutine is a sequence of prog ...

  4. QTREE----树剖

    题目内容: ---------------------------------------------------- Query on a tree Time Limit: 851MS   Memor ...

  5. BZOJ2120 数颜色(带修改的莫队算法)

    Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜 ...

  6. HTML5 使用浏览器内置数据库之 indexedDB

    indexedDB是H5规范里的浏览器内置数据库,是nosql数据库的一种.因为另一种数据库Web SQL不再受W3C支持,所以还得学习下这个. 基本情况 兼容性:ie11及以上都支持, W3C是这么 ...

  7. (六)整合 QuartJob ,实现定时器实时管理

    整合 QuartJob ,实现定时器实时管理 1.QuartJob简介 1.1 核心API 2.SpringBoot整合QuartJob 2.1 项目结构 2.2 定时器配置 2.3 定时器管理工具 ...

  8. 基础知识——TCP协议

    七层网络模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层. 五层网络模型: 1. 应用层:确定进程之间通信的性质以满足用户需求.(各种传输协议) 2. 运输层:负责主机间不同进程的通信 ...

  9. hbase伪分布式环境的搭建

    一,实验环境: 1, ubuntu server 16.04 2, jdk,1.8 3, hadoop 2.7.4 伪分布式环境或者集群模式 4, hbase-1.2.6.tar.gz 二,环境的搭建 ...

  10. 安装superset

    1.首先去Anaconda官网下载安装脚本 Anaconda3-2019.07-Linux-x86_64.sh 2.上传Anaconda3-2019.07-Linux-x86_64.sh 将Anaco ...