Javascript 严格模式("use strict";)详细解解
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";)详细解解的更多相关文章
- Javascript 严格模式use strict
一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:“严格模式”(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. 设立”严格模式”的目 ...
- Javascript 严格模式use strict详解
1.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. ...
- JavaScript进阶【二】JavaScript 严格模式(use strict)的使用
/*** *使用严格模式的原因: * ①:消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; ②:消除代码运行的一些不安全之处,保证代码运行的安全: ③:提高编译器效率,增加运行 ...
- 【JS】312- 复习 JavaScript 严格模式(Strict Mode)
点击上方"前端自习课"关注,学习起来~ 注:本文为 < JavaScript 完全手册(2018版) >第30节,你可以查看该手册的完整目录. 严格模式是一项 ES5 ...
- JavaScript 严格模式(use strict)
前言: "use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增. 它不是一条语句,但是是一个字面量表达式,在 JavaScript ...
- 浅谈JavaScript严格模式(use strict)
"use strict" 的目的是指定代码在严格条件下执行. 严格模式下你不能使用未声明的变量. 严格模式声明 严格模式通过在脚本或函数的头部添加 "use strict ...
- Javascript 严格模式(strict mode)详解
Javascript 严格模式详解 一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Ja ...
- Javascript 严格模式 strict mode(转)
一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. ...
- JavaScript严谨模式(Strict Mode)
下面的内容翻译自It’s time to start using JavaScript strict mode,作者Nicholas C.Zakas参与了YUI框架的开发,并撰写了多本前端技术书籍,在 ...
随机推荐
- centos7防火墙firewalld拒绝某ip或者某ip段访问服务器任何服务
安装firewall后(LINUX7系统一般情况下默认已安装),防火墙默认配置是只打开SSH端口的,也就是22端口,如果SSH的端口已更改成别的端口了,请切记一定在启动firewall前先修改对应服务 ...
- 不错的网站压力测试工具webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.前期准备:yum install ...
- 文件的上传/下载+在线游览(转化html)--不需要在线插件//自己写的小方法
1 /// <summary> 2 /// 文件上传下载帮助类 3 /// </summary> 4 public static class FileHelper 5 { 6 ...
- Micro Frontends 微前端
Micro Frontends https://martinfowler.com/articles/micro-frontends.html Integration approaches Server ...
- Java多线程--两种实现方式
进程概述: 在这之前,有必要了解一下什么是进程? 在一个操作系统中,每个独立的执行的程序都可称为一个进程,也就是"正在运行的程序".如图所示: 线程概述: 如上所述,每个运行的程序 ...
- Java中get()和set()作用
一.前言 在程序的设计中,我们普遍的定义一个private变量,然后为这个变量加上get() .set()方法,那为何不直接定义一个public变量呢? 很多人是这样回答的: 1.关系到安全性的问题, ...
- Node 使用webpack编写简单的前端应用
编写目的 1. 使用 Node 依赖webpack.jQuery编写简单的前端应用. 操作步骤 (1)新建一个目录 $ mkdir simple-app-demo $ cd simple-app-de ...
- Flutter环境搭建遇坑小结(一)
对flutter的了解与开发也有一段时间了,总的来说,搭建开发环境遇到的各种坑也是很多,尤其对于初次接触Android开发的人员来说 一.flutter运行提示Running Gradle task ...
- Stream API处理集合
使用流来遍历集合 简介 如何工作 总结 从集合或数组创建流 简介 如何工作 结论 聚合流的值 简介 如何工作 结论 转载 使用流来遍历集合 简介: Java的集合框架,如List和Map接口及Arra ...
- OSPF路由汇总
转载自红茶三杯博客:http://blog.sina.com.cn/s/blog_5ec353710102vtfy.html 1. 关于路由汇总 路由汇总,又被称为路由聚合(Route Aggrega ...