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