国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript面向?qū)ο笾械膰?yán)格模式個(gè)人分享

lordharrd / 3265人閱讀

摘要:嚴(yán)格模式嚴(yán)格模式的概念所謂嚴(yán)格模式就是對(duì)中的一種限制性更強(qiáng)的方式屬于代碼的一種強(qiáng)制規(guī)則來(lái)規(guī)范代碼的格式簡(jiǎn)單的說(shuō)就是必須按照嚴(yán)格模式的規(guī)則書寫代碼否則就會(huì)報(bào)錯(cuò)嚴(yán)格模式修正了一些引擎難以優(yōu)化的錯(cuò)誤同樣的代碼有些時(shí)候嚴(yán)格模式會(huì)比非嚴(yán)格模式下更加快

嚴(yán)格模式 嚴(yán)格模式的概念

所謂嚴(yán)格模式就是對(duì)JavaScript中的一種限制性更強(qiáng)的方式.

屬于代碼的一種強(qiáng)制規(guī)則,來(lái)規(guī)范代碼的格式簡(jiǎn)單的說(shuō)就是必須按照嚴(yán)格模式的規(guī)則書寫代碼否則就會(huì)報(bào)錯(cuò)

嚴(yán)格模式修正了一些引擎難以優(yōu)化的錯(cuò)誤: 同樣的代碼有些時(shí)候嚴(yán)格模式會(huì)比非嚴(yán)格模式下更加快

開(kāi)啟嚴(yán)格模式 全局開(kāi)啟嚴(yán)格模式

就是在所有代碼之前,定義一個(gè)不會(huì)賦給任何變量的字符串

示例代碼:

// 開(kāi)啟嚴(yán)格模式 - 作用于全局作用域
  "use strict";
// 定義一個(gè)變量 - 不使用var關(guān)鍵字

b = "皮卡丘";
console.log(b);

控制臺(tái)示例圖:

變量 禁止意外創(chuàng)建變量

沒(méi)有開(kāi)啟嚴(yán)格模式時(shí)

在調(diào)用該變量時(shí),不會(huì)報(bào)錯(cuò)

解釋器會(huì)自動(dòng)補(bǔ)全 var關(guān)鍵字

開(kāi)啟嚴(yán)格模式時(shí)

在調(diào)用該變量時(shí),會(huì)報(bào)錯(cuò)

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

var v = "舒克,貝特";
console.log(v);


function fn() {
    /* 在非嚴(yán)格模式:
        * 在函數(shù)作用域中定義變量 - 不適用var關(guān)鍵字時(shí)JavaScript就會(huì)自動(dòng)將其提升為全局變量
     */
    w = "貓和老鼠";
    console.log(w);
}
fn();
console.log(w);

控制臺(tái)效果對(duì)比圖:

靜默失敗轉(zhuǎn)為異常

靜默表示既不報(bào)錯(cuò)也不顯示任何效果

在嚴(yán)格模式下,靜默失敗會(huì)轉(zhuǎn)為報(bào)錯(cuò)

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

const v = 12.19;// 定義常量
v = 1993;// 重新賦值

console.log(v);

控制臺(tái)效果圖:

禁用delete關(guān)鍵字

注意: 注意: 嚴(yán)格模式下禁用delete關(guān)鍵字 - 是針對(duì)刪除變量,而不是數(shù)組元素的對(duì)象屬性的

在非嚴(yán)格模式下,對(duì)變量使用delete 會(huì)靜默失敗

在嚴(yán)格模式下,對(duì)變量使用delete 會(huì)報(bào)錯(cuò)

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

// 注意: 嚴(yán)格模式下禁用delete關(guān)鍵字 - 是針對(duì)刪除變量,而不是數(shù)組元素的對(duì)象屬性的

// 定義一個(gè)全局變量
var v = "皮卡丘";
console.log(v);

delete  v;//刪除全局變量v
console.log(v);

//定義一個(gè)數(shù)組
var arr = [1,2,3,4,5];
delete arr[0];
console.log(arr);


// 定義一個(gè)對(duì)象
var obj = {
    name : "花花世界"
};
delete obj.name;
console.log(obj.name);

控制臺(tái)效果對(duì)比:

對(duì)變量名的限制

注意: 嚴(yán)格模式下不允許把保留字當(dāng)變量名稱 - 因?yàn)樵贓S6中保留字會(huì)變成關(guān)鍵字

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

/*
    注意: 嚴(yán)格模式下不允許把保留字當(dāng)變量名稱
      * 因?yàn)樵贓S6中保留字會(huì)變成關(guān)鍵字
 */
var static = "一花一世界";
console.log(static);

控制臺(tái)效果對(duì)比圖:

對(duì)象 不可刪除的屬性

在非嚴(yán)格模式下,使用delete去刪除不可刪除的屬性時(shí),會(huì)靜默失敗

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

/* 使用delete 刪除Object對(duì)象的原型屬性 */
delete Object.prototype;
/* 在調(diào)用Object對(duì)象的原型屬性 */
console.log(Object.prototype);

控制臺(tái)效果對(duì)比圖:

屬性名必須唯一

當(dāng)開(kāi)啟嚴(yán)格模式時(shí) - 對(duì)象具有相同名稱的屬性時(shí),編輯器報(bào)錯(cuò)(不是運(yùn)行時(shí)報(bào)錯(cuò))

當(dāng)非嚴(yán)格模式時(shí) - 對(duì)象具有相同名稱的屬性時(shí),后面的會(huì)覆蓋前面的屬性名

示例代碼:

// 開(kāi)啟嚴(yán)格模式
 "use strict";

var obj = {
    /*
        當(dāng)開(kāi)啟嚴(yán)格模式時(shí) - 對(duì)象具有相同名稱的屬性時(shí),編輯器報(bào)錯(cuò)(不是運(yùn)行時(shí)報(bào)錯(cuò))
        當(dāng)非嚴(yán)格模式時(shí) - 對(duì)象具有相同名稱的屬性時(shí),后面的會(huì)覆蓋前面的屬性名
     */
    name : "皮卡丘",
    name : "亞奇洛貝"
};
console.log(obj.name);

控制臺(tái)效果對(duì)比圖:

只讀屬性的賦值

在非嚴(yán)格模式下,對(duì)只讀屬性進(jìn)行從新賦值,會(huì)靜默失敗

在嚴(yán)格模式下,對(duì)只讀屬性進(jìn)行重新賦值,會(huì)報(bào)錯(cuò)

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

/* 定義一個(gè)對(duì)象 */
var obj = {
    name : "皮卡丘"
};
/* 獲取指定屬性的屬性描述符 - 將屬性改為只讀屬性 */
var result = Object.getOwnPropertyDescriptor(obj,"name");
console.log(result);
// 定義對(duì)象obj的只讀屬性
Object.defineProperty(obj,"age",{
    value : 18
});
// 針對(duì)只讀屬性進(jìn)行修改操作
// obj.age = 80;
// console.log(obj.age);

delete obj.age;
console.log(obj.age);

控制臺(tái)效果對(duì)比圖:

不可擴(kuò)展的對(duì)象

在非嚴(yán)格模式下,對(duì)不可擴(kuò)展的對(duì)象添加新屬性,會(huì)靜默失敗

在嚴(yán)格模式下,對(duì)不可擴(kuò)展的對(duì)象添加新屬性,會(huì)報(bào)錯(cuò)

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

/* 定義一個(gè)空對(duì)象 */
var obj = {};
// 設(shè)置對(duì)象obj是一個(gè)不可擴(kuò)展的對(duì)象
Object.preventExtensions(obj);
// 為對(duì)象obj新增屬性
obj.name = "皮卡丘";
/* 調(diào)用對(duì)象 */
console.log(obj);

控制臺(tái)效果對(duì)比圖:

函數(shù) 參數(shù)名必須唯一

在非嚴(yán)格模式下,參數(shù)名允許重復(fù),后面匹配的參數(shù)會(huì)覆蓋之前匹配的參數(shù)

在嚴(yán)格模式下,參數(shù)名重復(fù)時(shí),編輯器會(huì)提示報(bào)錯(cuò),運(yùn)行時(shí)也會(huì)報(bào)錯(cuò)

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

/* 定義一個(gè)函數(shù) */
function fn(a,a,b) {
    console.log(a + a + b);
}
/* 調(diào)用函數(shù)并傳遞參數(shù) */
fn(1,2,3);

控制臺(tái)效果對(duì)比圖:

arguments的不同

嚴(yán)格模式下 - arguments對(duì)象獲取參數(shù)的值與形參有關(guān)的

如果局部變量與形參名相同 - 就根據(jù)就近原則進(jìn)行獲取

嚴(yán)格模式下 - arguments對(duì)象獲取參數(shù)的值與形參無(wú)關(guān)的

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

function fn(value) {
    var value = "皮卡丘";
    console.log(value);// 調(diào)用結(jié)果為 皮卡丘 - 就近原則
    /*
        * 嚴(yán)格模式下 - arguments對(duì)象獲取參數(shù)的值與形參有關(guān)的
          * 如果局部變量與形參名相同 - 就根據(jù)就近原則進(jìn)行獲取
        * 嚴(yán)格模式下 - arguments對(duì)象獲取參數(shù)的值與形參無(wú)關(guān)的
     */
    console.log(arguments[0]);// 調(diào)用結(jié)果為 皮卡丘 , 嚴(yán)格模式下調(diào)用結(jié)果為 皮皮蝦
}
fn("皮皮蝦");

控制臺(tái)效果對(duì)比圖:

arguments對(duì)象的callee( )方法

在非嚴(yán)格模式下,callee()方法表示當(dāng)前調(diào)用的函數(shù)

在嚴(yán)格模式下,arguments對(duì)象將無(wú)法調(diào)用callee()方法,會(huì)報(bào)錯(cuò)

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

/* 定義一個(gè)函數(shù) */
function fn() {
    console.log(arguments.length);
    /* 將callee()方法返回 */
    return arguments.callee;
}
fn();

控制臺(tái)效果對(duì)比圖:

函數(shù)聲明的限制

在嚴(yán)格模式下, 函數(shù)的定義只能在全局作用域與函數(shù)作用域(不能再塊級(jí)作用域定義函數(shù))

在非嚴(yán)格模式下,函數(shù)可以在任何作用域下進(jìn)行定義

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

// 在全局作用域
function fn() {
    // 在函數(shù)作用域
    function n() {}
}
// 在嚴(yán)格模式下, 函數(shù)的定義只能在全局作用域與函數(shù)作用域(不能再塊級(jí)作用域定義函數(shù))
for (var i=0; i<10; i++){
    //ECMAScript 6新增 - 存在著塊級(jí)作用域
    var v = 100;
    function f() {
        console.log("這是一個(gè)皮卡丘");
    }
}
console.log(v);
f();

控制臺(tái)對(duì)比效果圖:

eval()函數(shù) 增加eval()作用域

在非嚴(yán)格模式下,eval()函數(shù)創(chuàng)建的變量可以在其他位置進(jìn)行調(diào)用

在嚴(yán)格模式下,eval()函數(shù)創(chuàng)建的變量只能在當(dāng)前eval()函數(shù)中使用,其他位置調(diào)用會(huì)報(bào)錯(cuò)

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

// 在嚴(yán)格模式下,增加eval作用域 - eval()函數(shù)定義的變量只能在當(dāng)前eval()函數(shù)中使用
eval("var v = "一花一世界";");
// 在全局作用域中調(diào)用變量 - 則會(huì)報(bào)錯(cuò)
console.log(v);// 非嚴(yán)格模式下調(diào)用結(jié)果為 一花一世界

控制臺(tái)效果對(duì)比圖:

arguments對(duì)象 禁止讀寫

在非嚴(yán)格模式下,使用 eval 或 arguments 做為標(biāo)識(shí)符(變量名、函數(shù)名、對(duì)象名)時(shí),會(huì)靜默失敗

在嚴(yán)格模式下,使用 eval 或 arguments 做為標(biāo)識(shí)符(變量名、函數(shù)名、對(duì)象名)時(shí),會(huì)報(bào)錯(cuò)

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";

/* 使用 eval 或 arguments 做為標(biāo)識(shí)符 */
eval = 17;
arguments++;
++eval;
var obj = { set p(arguments) { } };
var eval;
try { } catch (arguments) { }
function x(eval) { }
function arguments() { }
var y = function eval() { };
var f = new Function("arguments", ""use strict"; return 17;");

代碼效果圖:

this關(guān)鍵字 抑制this

在非嚴(yán)格模式下,在函數(shù)使用apply()方法或call()方法來(lái)調(diào)用函數(shù)時(shí),使用null或undefined來(lái)代替this的指向?qū)ο髸r(shí),this會(huì)指向全局對(duì)象

在嚴(yán)格模式下,在函數(shù)使用apply()方法或call()方法來(lái)調(diào)用函數(shù)時(shí),使用null或undefined來(lái)代替this的指向?qū)ο髸r(shí),會(huì)報(bào)錯(cuò)

示例代碼:

// 開(kāi)啟嚴(yán)格模式
"use strict";


/* 定義全局變量 */
var v = 100;

/* 定義函數(shù) */
function fn() {
    console.log(this.v);
}


/* 使用appl()方法或call()方法來(lái)調(diào)用函數(shù) */
fn.call(obj);// this 指向全局對(duì)象

控制臺(tái)效果對(duì)比圖:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/96975.html

相關(guān)文章

  • JavaScript之a(chǎn)rguments

    摘要:三的屬性屬性表示傳入函數(shù)的實(shí)際參數(shù)數(shù)量,而不是函數(shù)聲明時(shí)的形參數(shù)量。你好你好你好你好你好你好擴(kuò)展運(yùn)算符你好你好五嚴(yán)格模式嚴(yán)格模式和非嚴(yán)格模式中,的表現(xiàn)顯示不相同。而在嚴(yán)格模式中,實(shí)參和的值不會(huì)共享。 本文共 635 字,讀完只需 3 分鐘 概述 JavaScript中的函數(shù)與其他面向?qū)ο笳Z(yǔ)言有幾個(gè)不同的地方。 沒(méi)有函數(shù)重載 有一個(gè)表示實(shí)參列表的類數(shù)組對(duì)象 arguments 一、...

    miqt 評(píng)論0 收藏0
  • JavaScript面向對(duì)象中的嚴(yán)格模式

    摘要:開(kāi)啟嚴(yán)格模式設(shè)置對(duì)象是一個(gè)不可擴(kuò)展的對(duì)象為對(duì)象新增屬性張無(wú)忌在非嚴(yán)格模式下為不可擴(kuò)展的對(duì)象添加新屬性,結(jié)果是靜默失敗。 概述 嚴(yán)格模式是什么 嚴(yán)格模式是JavaScript中的一種限制性更強(qiáng)的變種方式。嚴(yán)格模式不是一個(gè)子集:它在語(yǔ)義上與正常代碼有著明顯的差異。不支持嚴(yán)格模式的瀏覽器與支持嚴(yán)格模式的瀏覽器行為上也不一樣,所以不要在未經(jīng)嚴(yán)格模式特性測(cè)試情況下使用嚴(yán)格模式。嚴(yán)格模式可以與非嚴(yán)...

    bang590 評(píng)論0 收藏0
  • 前端_JavaScript_面向對(duì)象編程

    摘要:面向?qū)ο缶幊虒?duì)象的原生方法分成兩類自身的方法靜態(tài)方法和的實(shí)例方法。的靜態(tài)方法方法與,參數(shù)是對(duì)象,返回一個(gè)數(shù)組,數(shù)組的值是改對(duì)象自身的所有屬性名區(qū)別在于返回可枚舉的屬性,返回不可枚舉的屬性值。 面向?qū)ο缶幊?Objects對(duì)象的原生方法分成兩類:Object自身的方法(靜態(tài)方法)和Object的實(shí)例方法。注意Object是JavaScript的原生對(duì)象,所有的其他對(duì)象都是繼承自O(shè)bjec...

    Blackjun 評(píng)論0 收藏0
  • JavaScript之“use strict”

    摘要:在嚴(yán)格模式中,當(dāng)運(yùn)算符后跟隨非法的標(biāo)識(shí)符比如變量函數(shù)函數(shù)參數(shù)時(shí),將會(huì)拋出一個(gè)語(yǔ)法錯(cuò)誤異常在非嚴(yán)格模式中,這種表達(dá)式什么也沒(méi)做,并返回。 JavaScript之use strict use strict是ECMAScript 5引入的一條指令。指令不是語(yǔ)句(但非常接近于語(yǔ)句)。usestrict指令和普通的語(yǔ)句之間有兩個(gè)重要的區(qū)別: 它不包含任何語(yǔ)言的關(guān)鍵字,指令僅僅是一個(gè)包含一個(gè)特殊...

    econi 評(píng)論0 收藏0
  • JavaScript面向對(duì)象 [ 嚴(yán)格模式 ]

    摘要:嚴(yán)格模式描述嚴(yán)格模式可以分別作用在全局作用域中和函數(shù)作用域中嚴(yán)格模式是對(duì)代碼的一種限制方式嚴(yán)格模式可以將不明確顯示的錯(cuò)誤轉(zhuǎn)變成明確顯示嚴(yán)格模式可以修正一些解釋器難以優(yōu)化的錯(cuò)誤嚴(yán)格模式下的變量禁止意外創(chuàng)建變量沒(méi)有開(kāi)啟嚴(yán)格模式時(shí)在調(diào)用該變量時(shí), 嚴(yán)格模式 描述 嚴(yán)格模式可以分別作用在全局作用域中和函數(shù)作用域中 嚴(yán)格模式是對(duì)JavaScript代碼的一種限制方式 嚴(yán)格模式可以將不明確顯...

    zsirfs 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<