精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

前端開發必須知道JavaScript中的嚴格模式

開發 開發工具
“嚴格模式”體現了Javascript更合理、更安全、更嚴謹的發展方向,包括IE 10在內的主流瀏覽器,都已經支持它,許多大項目已經開始全面擁抱它。本文將對”嚴格模式”做詳細介紹。

一、概述

除了正常運行模式,ECMAscript 5添加了第二種運行模式:“嚴格模式”(strict mode)。顧名思義,這種模式使得JavaScript在更嚴格的條件下運行。

嚴格模式

1.設立”嚴格模式”的目的,主要有以下幾個:

2.消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為;

3.消除代碼運行的一些不安全之處,保證代碼運行的安全;

4.提高編譯器效率,增加運行速度;

5.為未來新版本的Javascript做好鋪墊。

“嚴格模式”體現了Javascript更合理、更安全、更嚴謹的發展方向,包括IE 10在內的主流瀏覽器,都已經支持它,許多大項目已經開始全面擁抱它。

另一方面,同樣的代碼,在”嚴格模式”中,可能會有不一樣的運行結果;一些在”正常模式”下可以運行的語句,在”嚴格模式”下將不能運行。掌握這些內容,有助于更細致深入地理解Javascript,讓你變成一個更好的程序員。

本文將對”嚴格模式”做詳細介紹。

二、進入標志

進入”嚴格模式”的標志,是下面這行語句:

  1. "use strict"; 

老版本的瀏覽器會把它當作一行普通字符串,加以忽略。

三、如何調用

“嚴格模式”有兩種調用方法,適用于不同的場合。

1. 針對整個腳本文件

將”use strict”放在腳本文件的***行,則整個腳本都將以”嚴格模式”運行。如果這行語句不在***行,則無效,整個腳本以”正常模式”運行。如果不同模式的代碼文件合并成一個文件,這一點需要特別注意。

  1. <script> 
  2.     "use strict";    
  3.      console.log("這是嚴格模式。"); 
  4. </script> 
  5. <script> 
  6.     console.log("這是正常模式。"); 
  7. </script> 

 

上面的代碼表示,一個網頁中依次有兩段Javascript代碼。前一個script標簽是嚴格模式,后一個不是。

2. 針對單個函數

將”use strict”放在函數體的***行,則整個函數以”嚴格模式”運行。

  1. function strict(){     
  2.     "use strict";     
  3.     return "這是嚴格模式。"; 
  4. function notStrict() {     
  5.     return "這是正常模式。"; 

3. 腳本文件的變通寫法

因為***種調用方法不利于文件合并,所以更好的做法是,借用第二種方法,將整個腳本文件放在一個立即執行的匿名函數之中。

  1. (function (){ 
  2.     "use strict";// some code here 
  3. })(); 

四、語法和行為改變

嚴格模式對Javascript的語法和行為,都做了一些改變。

1. 全局變量顯式聲明

在正常模式中,如果一個變量沒有聲明就賦值,默認是全局變量。嚴格模式禁止這種用法,全局變量必須顯式聲明。

  1. "use strict"; 
  2.  
  3. v = 1; // 報錯,v未聲明 
  4. for(i = 0; i < 2; i++) { // 報錯,i未聲明 

因此,嚴格模式下,變量都必須先用var命令聲明,然后再使用。

2. 靜態綁定

Javascript語言的一個特點,就是允許”動態綁定”,即某些屬性和方法到底屬于哪一個對象,不是在編譯時確定的,而是在運行時(runtime)確定的。

嚴格模式不允許動態綁定,只允許靜態綁定。也就是說,屬性和方法到底歸屬哪個對象,必須在編譯階段就確定。這樣做有利于編譯效率的提高,也使得代碼更容易閱讀,更少出現意外。

具體來說,涉及以下幾個方面。

(1)禁止使用with語句

因為with語句無法在編譯時就確定,屬性到底歸屬哪個對象。

  1. "use strict"; 
  2.     var v = 1
  3.     with (o){ / 語法錯誤 
  4.     v = 2

(2)創設eval作用域

正常模式下,Javascript語言有兩種變量作用域(scope):全局作用域和函數作用域。嚴格模式創設了第三種作用域:eval作用域。

正常模式下,eval語句的作用域,取決于它處于全局作用域,還是函數作用域。嚴格模式下,eval語句本身就是一個作用域,不再能夠生成全局變量了,它所生成的變量只能用于eval內部。

  1. "use strict"; 
  2.     var x = 2
  3.     console.info(eval("var x = 5; x")); // 5 
  4.     console.info(x); // 2 

3. 增強的安全措施

(1)禁止this關鍵字指向全局對象

  1. function f(){         
  2.      return !this; 
  3.     } 
  4. // 返回false,因為"this"指向全局對象,"!this"就是false 
  5. function f(){     
  6.     "use strict";     
  7.     return !this; 
  8. // 返回true,因為嚴格模式下,this的值為undefined, 
  9. 所以"!this"為true。 

因此,使用構造函數時,如果忘了加new,this不再指向全局對象,而是報錯。

  1. function f(){ 
  2.     "use strict";    this.a = 1
  3.  
  4. }; 
  5.  
  6. f();// 報錯,this未定義 

(2)禁止在函數內部遍歷調用棧

  1. function f1(){ 
  2.     "use strict"; 
  3.  
  4.     f1.caller; // 報錯 
  5.  
  6.     f1.arguments; // 報錯} 
  7.  
  8. f1(); 

4. 禁止刪除變量

嚴格模式下無法刪除變量。只有configurable設置為true的對象屬性,才能被刪除。

  1. "use strict";var x;delete x;  
  2. // 語法錯誤var o = Object.create(null, 'x', { 
  3.     value: 1, 
  4.     configurable: true});delete o.x;  
  5. // 刪除成功 

5. 顯式報錯

正常模式下,對一個對象的只讀屬性進行賦值,不會報錯,只會默默地失敗。嚴格模式下,將報錯。

  1. "use strict";var o = {}; 
  2. Object.defineProperty(o, "v", {  
  3.     value: 1, writable: false  
  4. }); 
  5. o.v = 2;  
  6. // 報錯 

嚴格模式下,對一個使用getter方法讀取的屬性進行賦值,會報錯。

  1. "use strict";var o = { 
  2.  
  3. get v() { return 1; } 
  4.  
  5. }; 
  6.  
  7. o.v = 2;  
  8. // 報錯 

嚴格模式下,對禁止擴展的對象添加新屬性,會報錯。

  1. "use strict";var o = {}; 
  2.  Object.preventExtensions(o); 
  3.  o = 1; // 報錯 

嚴格模式下,刪除一個不可刪除的屬性,會報錯。

  1. "use strict"; 
  2. delete Object.prototype; // 報錯 

6. 重名錯誤

嚴格模式新增了一些語法錯誤。

(1)對象不能有重名的屬性

正常模式下,如果對象有多個重名屬性,***賦值的那個屬性會覆蓋前面的值。嚴格模式下,這屬于語法錯誤。

  1. "use strict";var o = { 
  2.     p: 1, 
  3.     p: 2 
  4. }; // 語法錯誤 

(2)函數不能有重名的參數

正常模式下,如果函數有多個重名的參數,可以用arguments[i]讀取。嚴格模式下,這屬于語法錯誤。

  1. "use strict";function f(a, a, b) { // 語法錯誤 
  2.     return ; 

7. 禁止八進制表示法

正常模式下,整數的***位如果是0,表示這是八進制數,比如0100等于十進制的64。嚴格模式禁止這種表示法,整數***位為0,將報錯。

  1. "use strict"; 
  2.  var n = 0100; // 語法錯誤 

8.  arguments對象的限制

arguments是函數的參數對象,嚴格模式對它的使用做了限制。

(1)不允許對arguments賦值

  1. "use strict"; 
  2. arguments++; // 語法錯誤 
  3. var obj = { set p(arguments) { } }; // 語法錯誤 
  4. try { } catch (arguments) { } // 語法錯誤 
  5. function arguments() { } // 語法錯誤 
  6. var f = new Function("arguments", "'use strict'; return 17;");  
  7. // 語法錯誤 

(2)arguments不再追蹤參數的變化

  1. function f(a) { 
  2.         a = 2;         
  3.         return [a, arguments[0]]; 
  4.     } 
  5.      
  6.     f(1);  
  7.     // 正常模式為[2,2] 
  8.     function f(a) {     
  9.         "use strict"; 
  10.         a = 2;         
  11.         return [a, arguments[0]]; 
  12.      
  13.     } 
  14.      
  15.     f(1);  
  16.     // 嚴格模式為[2,1] 

(3)禁止使用arguments.callee

這意味著,你無法在匿名函數內部調用自身了。

  1. "use strict";var f = function() {  
  2.     return arguments.callee;  
  3.  }; 
  4.  
  5. f();  
  6. // 報錯 

9. 函數必須聲明在頂層

將來Javascript的新版本會引入”塊級作用域”。為了與新版本接軌,嚴格模式只允許在全局作用域或函數作用域的頂層聲明函數。也就是說,不允許在非函數的代碼塊內聲明函數。

  1. "use strict"; 
  2. if (true) {     
  3.     function f() { } // 語法錯誤、 
  4. for (var i = 0; i < 5; i++) {     
  5.     function f2() { } // 語法錯誤 

10. 保留字

為了向將來Javascript的新版本過渡,嚴格模式新增了一些保留字:implements, interface, let, package, private, protected, public, static, yield。

使用這些詞作為變量名將會報錯。

  1. function package(protected) {  
  2. // 語法錯誤 
  3.     "use strict";     
  4.     var implements;  
  5. // 語法錯誤 

此外,ECMAscript第五版本身還規定了另一些保留字:class, enum, export, extends, import, super。它們也是不能使用的。

【本文為51CTO專欄作者“謝軍”的原創稿件,轉載可通過作者微信公眾號(jingfeng18)獲取聯系】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2010-04-12 14:58:56

Meego開發

2022-10-25 18:46:36

JavaScript

2020-09-09 10:53:06

前端開發工具

2020-03-19 15:30:08

JavaScript數組字符串

2023-05-11 16:29:39

Javascript開發前端

2022-06-08 10:42:34

ReduceJavaScript技巧

2020-10-13 09:28:51

vue開發

2012-06-27 09:36:37

軟件開發軟件開發

2015-04-15 10:50:06

綜合布線

2021-08-13 22:42:14

微服務架構開發

2011-04-19 13:32:01

jQueryjavascript

2020-07-09 07:34:40

開發Web工具

2018-04-08 10:08:43

開發人員工具

2017-09-25 16:22:04

App

2014-09-01 09:53:50

Android框架

2023-06-02 15:55:42

JavaScrip開發

2023-04-11 15:22:06

JavaScript開發前端

2022-10-17 15:33:46

前端開發數組

2017-12-07 15:28:36

2012-09-29 10:29:56

.Net內存分配繼承
點贊
收藏

51CTO技術棧公眾號

乳色吐息在线观看| 亚洲精品乱码久久久久久蜜桃91 | 亚洲精选视频在线| 成人av免费电影| 二区视频在线观看| 欧美3p在线观看| 精品成人一区二区三区| 日本熟妇人妻xxxxx| 免费黄色电影在线观看| 9色porny自拍视频一区二区| 国产精品video| 黄色a级片在线观看| 伊人精品一区| 欧美不卡123| 91福利国产成人精品播放| 日韩三级电影视频| 国产精品丝袜91| 精品国产91亚洲一区二区三区www| 中文字幕 亚洲视频| 日韩午夜黄色| 九九九久久久久久| 日韩丰满少妇无码内射| 盗摄系列偷拍视频精品tp| 欧美视频在线观看一区二区| 欧美一区二区中文字幕| 国产调教视频在线观看| 国产日产亚洲精品系列| 国内一区在线| 精品国产九九九| 美腿丝袜一区二区三区| 欧美一级淫片videoshd| 欧美日韩一级在线观看| 欧美电影《睫毛膏》| 亚洲区在线播放| 国产精品入口麻豆| 国产剧情一区二区在线观看| 在线看一区二区| 亚洲午夜精品久久久久久人妖| 在线中文字幕第一页| 亚洲天天做日日做天天谢日日欢| 色综合久久久久久久久五月| 日本免费不卡| 91视频91自| 国内视频一区| 亚洲av成人精品一区二区三区在线播放 | 国产日产精品_国产精品毛片| 亚洲第一福利网| 人妻精油按摩bd高清中文字幕| 欧美性生活一级| 欧美唯美清纯偷拍| 无码人妻丰满熟妇区五十路百度| 蜜桃av在线| 色综合色狠狠综合色| 欧美二区在线视频| 女海盗2成人h版中文字幕| 午夜精品久久久久久久久久久| 国产女人18毛片| 色呦呦呦在线观看| 亚洲综合丁香婷婷六月香| 欧美做受777cos| 日韩av官网| 亚洲国产欧美在线| 阿v天堂2017| 亚洲天堂导航| 在线观看日韩国产| 欧美黄色性生活| 99re久久| 日韩一区二区免费高清| 亚洲成年人在线观看| 国产精品一区二区三区美女| 亚洲精品久久久久中文字幕欢迎你| 亚洲国产综合视频| 亚洲精品动态| 中文字幕在线国产精品| 中国毛片直接看| 亚洲网站视频| 日本免费一区二区三区视频观看| 国产免费a视频| 精品一区二区在线免费观看| 福利精品视频| 欧美偷拍视频| 国产精品理伦片| 日本一级黄视频| 亚洲精品福利电影| 欧美日韩高清不卡| 亚洲成a人片在线www| 亚洲精品动态| 久久亚洲综合国产精品99麻豆精品福利| 麻豆亚洲av熟女国产一区二 | 欧美精品一区二区久久| 久久久成人av| 五月天综合激情网| 久久精品国产亚洲一区二区三区| 成人9ⅰ免费影视网站| 你懂的在线播放| 亚洲欧美另类小说| 成年人视频观看| 国产精品成人**免费视频| 亚洲精品成人免费| 三级全黄做爰视频| 久久精品官网| 国产精品传媒毛片三区| avav免费在线观看| 午夜精品在线视频一区| 亚洲欧美aaa| 秋霞综合在线视频| 久久国产精品久久国产精品| 免费av网站在线| 国产乱理伦片在线观看夜一区| 久久久久se| 岛国成人毛片| 欧美影院精品一区| 中文字幕在线永久| 午夜国产精品视频免费体验区| 日本精品视频在线观看| 亚洲乱码国产乱码精品精软件| 久久久久久久电影| 青青草视频在线免费播放| 欧美成人aaa| 亚洲天堂成人在线视频| 国产成人精品亚洲男人的天堂| 捆绑紧缚一区二区三区视频| 日本精品一区| 天堂8中文在线最新版在线| 日韩欧美专区在线| 日本激情视频一区二区三区| 日日夜夜一区二区| 精品在线不卡| 91九色在线播放| 91精品国产乱| 免费黄色激情视频| 蜜臀91精品一区二区三区| 欧美国产一区二区在线| 91九色美女在线视频| 欧美大片拔萝卜| 天天操天天操天天操天天操天天操| 日韩精品1区2区3区| 免费国产一区二区| 国产污视频在线播放| 精品国产亚洲一区二区三区在线观看| 日韩三级久久久| 麻豆免费看一区二区三区| 日韩欧美在线一区二区| 黑人巨大精品| 亚洲男女性事视频| 在线观看免费av片| 91蝌蚪porny| 欧美日韩亚洲第一| 天美av一区二区三区久久| 性欧美xxxx交| 三级理论午夜在线观看| 欧美性生交大片免费| 亚洲欧美日本一区| 99综合视频| 欧美精品欧美精品系列c| 在线能看的av网址| 一本色道久久88综合日韩精品 | 欧美日韩国产高清一区二区三区| 黄色免费一级视频| 精品一二三四在线| japanese在线播放| av男人一区| 2019中文字幕全在线观看| 日本人妖在线| 欧美日韩情趣电影| 日韩福利小视频| 国产 欧美在线| 伊人成色综合网| 欧美人与物videos另类xxxxx| 国产国语videosex另类| 色视频在线免费观看| 日韩一级完整毛片| 国产成人愉拍精品久久| 国产网站一区二区三区| 男人的天堂最新网址| 欧美日本三区| 欧美一级爽aaaaa大片| 69堂免费精品视频在线播放| 久久亚洲春色中文字幕| 日韩在线视频第一页| 色av成人天堂桃色av| 国产精品麻豆免费版现看视频| 国产成人啪午夜精品网站男同| 少妇高潮毛片色欲ava片| 免费欧美激情| 91九色在线观看| 欧美黄色网页| 欧美大片va欧美在线播放| 婷婷在线观看视频| 欧美三区在线视频| 国产精品成人免费一区二区视频| 国产亚洲综合性久久久影院| 日韩av福利在线观看| 啦啦啦中文在线观看日本| 欧美va亚洲va| 精品一区二区无码| 一区二区三区欧美在线观看| 精品人妻无码一区二区三区| 激情文学综合丁香| 国产3p露脸普通话对白| 欧美色图激情小说| 国产精品国产精品| 久久久久久久性潮| 国自在线精品视频| 麻豆视频免费在线观看| 日韩精品中文字幕在线播放| 国产日韩欧美视频在线观看| 色老汉一区二区三区| 久热这里有精品| 久久久不卡影院| 亚洲v在线观看| 久久精品国产亚洲高清剧情介绍| 亚洲熟妇无码一区二区三区| 亚欧美无遮挡hd高清在线视频| 久久久婷婷一区二区三区不卡| 欧美一级片网址| 国产精品mp4| 美女高潮视频在线看| 欧美日韩国产成人高清视频| 91xxx在线观看| 国产午夜精品麻豆| 四虎免费在线观看| 日韩精品一区国产麻豆| 国产又粗又猛视频| 欧美在线不卡一区| 91黑人精品一区二区三区| 天天影视涩香欲综合网| 欧美成人三级在线观看| 日韩一区在线播放| a资源在线观看| 国产日韩亚洲欧美综合| 丰满圆润老女人hd| 91色在线porny| 国模私拍在线观看| 东方欧美亚洲色图在线| 亚洲综合中文网| 国产精一区二区三区| 超碰在线资源站| 精品一二三四在线| www.午夜av| 国产精品一二三在| 欧美日韩久久婷婷| 久久国产精品露脸对白| 五月婷婷丁香色| 美国三级日本三级久久99| www.com黄色片| 免费成人av资源网| 亚洲一区二区在线视频观看| 日韩电影在线一区| 三年中国国语在线播放免费| 久久国产精品亚洲77777| 久久久久久久久久久视频| 亚洲国产高清一区二区三区| 男人的天堂狠狠干| 日韩视频久久| 日日碰狠狠躁久久躁婷婷| 天堂精品中文字幕在线| 欧美三级理论片| 九九国产精品视频| 永久看看免费大片| 成人精品鲁一区一区二区| 完美搭档在线观看| 久久影院电视剧免费观看| 久久精品无码一区| 国产精品麻豆网站| 欧美第一页在线观看| 亚洲国产精品一区二区www| www.毛片.com| 欧美三级中文字幕在线观看| 国产视频第二页| 精品少妇一区二区| 欧美美女色图| xxxx性欧美| 美女的胸无遮挡在线观看| 国产精品高潮视频| 视频精品一区| 免费国产在线精品一区二区三区| 久久在线电影| 人妻无码久久一区二区三区免费| 久久婷婷亚洲| 国产资源中文字幕| 97久久精品人人做人人爽| 91精品国自产在线| 亚洲综合色噜噜狠狠| 亚洲欧美偷拍视频| 91精品国产入口| 欧美套图亚洲一区| 欧美成人免费va影院高清| 久草免费在线视频| 成人午夜激情免费视频| 欧美成人一区在线观看| 中文字幕中文字幕一区三区| 亚洲经典自拍| 日韩高清第一页| 久久亚洲精华国产精华液| 日本高清不卡免费| 欧美日韩一区二区三区| h片在线免费看| 亚洲人午夜精品| 成人影音在线| 国产主播喷水一区二区| 美女网站一区| 18禁裸男晨勃露j毛免费观看| 免费看精品久久片| 国产精品久久不卡| 亚洲一区视频在线| 曰批又黄又爽免费视频| 亚洲黄页视频免费观看| www视频在线免费观看| 日韩女在线观看| 爱爱精品视频| 日本老太婆做爰视频| 欧美aaaaaa午夜精品| 中文人妻一区二区三区| 一区二区三区日韩精品| 一级片aaaa| 国产一区二区三区免费视频| 在线天堂资源www在线污| 成人有码在线播放| 日韩欧美视频在线播放| a√天堂在线观看| 成人av手机在线观看| www.av视频| 91精品国产91热久久久做人人| 大片免费播放在线视频| 日本高清视频精品| 日韩电影不卡一区| 欧美 日韩 国产 高清| 成人精品视频一区| 国产性生活网站| 日韩欧美国产三级电影视频| 国产一二三区在线观看| 成人精品一区二区三区| 欧美wwwww| 一级黄色录像在线观看| 中文字幕第一区二区| 一级一级黄色片| 在线成人一区二区| 亚洲综合在线电影| 日韩精品第一页| 日韩在线一区二区| 久久久视频6r| 欧美三级三级三级| 婷婷在线视频| 91精品中文在线| 影视一区二区| 一级全黄裸体片| 亚洲超丰满肉感bbw| 日韩中文字幕影院| 91精品国产91久久久久久最新| jizz性欧美23| 国产肥臀一区二区福利视频| 久久伊人蜜桃av一区二区| 无码人妻精品一区二区蜜桃色欲| 亚洲视频在线免费看| 欧美aaaaaaaa| 久久综合亚洲精品| 99精品欧美一区二区三区小说| 日本一区二区免费电影| 在线观看91久久久久久| vam成人资源在线观看| 蜜桃视频一区二区在线观看| 成人福利视频网站| chinese国产精品| 色多多国产成人永久免费网站| 成人影院网站ww555久久精品| 欧美这里只有精品| 91在线国产福利| 日本妇乱大交xxxxx| 欧美日韩国产123| 一道在线中文一区二区三区| 91制片厂毛片| 一区二区三区美女| 欧美91精品久久久久国产性生爱| 国产精品视频免费在线| 牛夜精品久久久久久久99黑人| 男女一区二区三区| 欧美日韩中文一区| 羞羞的视频在线观看| 欧美日本韩国国产| 精品伊人久久久久7777人| 久久久无码精品亚洲国产| 亚洲欧美日韩久久久久久 | 国产精品女主播一区二区三区| 天天躁日日躁aaaa视频| 91精品在线免费| 色综合亚洲图丝熟| 中文字幕一区二区三区有限公司| av在线不卡电影| 亚洲一区中文字幕在线| 国外成人在线视频| 天天影视欧美综合在线观看| 亚洲精品乱码久久| 欧美精品日日鲁夜夜添| 天天综合av| 看一级黄色录像| 久久久精品中文字幕麻豆发布| 国产三级自拍视频| 日本一区二区在线播放| 在线精品小视频|