• xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!


    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 = 10;
    			// 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 = 10;
    			// 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之Math和date
    JavaScript之ES5和String
    JavaScript之数组
    JavaScript之 函数
    JavaScript之循环语句
    movies.js
    Js内存存放机制
    Web框架
    css中那些属性是可以继承的?
    赋值运算
  • 原文地址:https://www.cnblogs.com/xgqfrms/p/5935333.html
Copyright © 2020-2023  润新知