摘要:也可以只在函數(shù)中打開嚴格模式嚴格模式下沒有全局變量嚴格模式下會報錯,非嚴格模式下正常刪除變量有三種聲明的情形聲明的全局變量聲明的局部變量中聲明的全局變量第一種和第二種情況是無法用刪掉的。
所謂嚴格模式其實就是一個不會賦值給任何變量的字符串 “use strict”
如果在全局作用域下 給出這個提示,那整個腳本將采用嚴格模式。也可以只在函數(shù)中打開嚴格模式
a="test"
嚴格模式下會報錯,非嚴格模式下正常
2.刪除變量var 有三種聲明的情形
var 聲明的全局變量
var 聲明的局部變量
eval()中聲明的全局變量
第一種和第二種情況是無法用 delete刪掉的。
首先第一種情況聲明的全局對象雖然是windows的屬性,但這個屬性的configurable=false 因此是無法刪除的
第二種情況 局部變量更不行了,連依附的對象是誰都不知道,怎么刪除
第三種情況eval()稍后會說到。
回歸正題。也就是說非嚴格模式下,可以刪除變量,但是會失敗返回false.
嚴格模式下刪除變量會報錯。
在下列情況下操作對象會報錯
為只讀屬性賦值會報錯
對不可配置的屬性使用delete 會報錯
為不可擴展的對象添加屬性會報錯
在使用對象字面量的時候,屬性名必須唯一。比如
var person={ name:"1", name:"2" }
非嚴格模式下會默認取值第二個,嚴格模式下會報錯。
4.函數(shù)嚴格模式要求函數(shù)參數(shù)名稱必須唯一
function(n,n){ // todo }
在非嚴格模式下,這個函數(shù)聲明不會報錯,通過參數(shù)名只能訪問到第二個參數(shù),第一個參數(shù)得通過arguments去訪問。
arguments在兩種模式下也有所不同
在非嚴格模式下,修改命名參數(shù)的值會反映到arguments對象中,在嚴格模式下兩個值是獨立的。
淘汰了 arguments.callee(引用函數(shù)本身),arguments.caller(引用調(diào)用函數(shù))。
嚴格模式下函數(shù)名不能使用js保留字
**嚴格模式下只能在腳本的頂級和在函數(shù)內(nèi)部聲明函數(shù),在if語句中聲明函數(shù)會導(dǎo)致語法錯誤。
**
if(true){ function(){ // 嚴格模式下報錯 } }5.this
在非嚴格模式下使用函數(shù)的apply(),call(),傳入null 或者undefined值會被轉(zhuǎn)換為全局對象。在嚴格模式下,函數(shù)的this始終是指定的值,無論指定的是什么值。
var a="1"; function test(){ console.log(this.a) } test.call(null) 在非嚴格模式下會輸出1,嚴格模式下this就指代的就是null,null沒有a屬性,就會報錯。
一會回來補充點別的
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/92897.html
摘要:是什么這個單詞是一個代詞,所以應(yīng)該是指代某些東西搞清楚的關(guān)鍵之處,就是要搞清楚指代了什么那么到底指代了什么呢就像你平時指著一個蘋果說指著一個香蕉說同樣,也會因為情況的不同而不同在中按照常規(guī)理解,的值是什么取決于函數(shù)如何被調(diào)用然而,的值是什么 1. this是什么 this這個單詞是一個代詞,所以this應(yīng)該是 指代某些東西搞清楚this的關(guān)鍵之處,就是要搞清楚this指代了什么 那么t...
摘要:嚴格模式和非嚴格模式有什么區(qū)別嚴格模式對正常的語義做了一些更改。其次,嚴格模式修復(fù)了一些導(dǎo)致引擎難以執(zhí)行優(yōu)化的缺陷有時候,相同的代碼,嚴格模式可以比非嚴格模式下運行得更快。 嚴格模式和非嚴格模式有什么區(qū)別: 嚴格模式對正常的 JavaScript語義做了一些更改。首先,嚴格模式通過拋出錯誤來消除了一些原有靜默錯誤。其次,嚴格模式修復(fù)了一些導(dǎo)致 JavaScript引擎難以執(zhí)行優(yōu)化的缺陷...
摘要:聲明了一個函數(shù),并且將它作為一個構(gòu)造函數(shù)調(diào)用構(gòu)造函數(shù)調(diào)用構(gòu)造函數(shù)調(diào)用是函數(shù)的構(gòu)造函數(shù)調(diào)用。構(gòu)造函數(shù)中的在構(gòu)造函數(shù)調(diào)用中指向新創(chuàng)建的對象構(gòu)造函數(shù)調(diào)用的上下文是新創(chuàng)建的對象。來看看下面示例中的上下文正在進行構(gòu)造函數(shù)調(diào)用,其中上下文是。 為了保證的可讀性,本文采用意譯而非直譯。 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 1. this 的奧秘 很多時候, JS 中...
摘要:它的代碼草稿紙簡直是瀏覽器里的調(diào)試神器,不僅簡單直觀,而且也具備了一般的編輯器功能,無奈用習慣了的,我用得較少但感覺作為開發(fā)者工具絕對業(yè)界良心。 一般平時的少量測試代碼, 我習慣直接在Chrome的DEV中調(diào)試, 一般的調(diào)試都沒有問題, 但難免一些小概率事件, 比如調(diào)試嚴格模式下的代碼(關(guān)于嚴格模式,mark在這里?嚴格模式), 這時候如果直接在console里輸入use strict...
閱讀 1493·2023-04-25 15:40
閱讀 2871·2021-08-11 11:15
閱讀 2282·2019-08-26 13:48
閱讀 2854·2019-08-26 12:18
閱讀 2457·2019-08-23 18:23
閱讀 2913·2019-08-23 17:01
閱讀 2987·2019-08-23 16:29
閱讀 1107·2019-08-23 15:15