国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaScript 運算符 in 詳細(xì)說明與使用注意事項

JavaScript 中的運算 in 符一開始確實令人困惑,因為它的行為方式與大多數(shù)人期望的不同。雖然它看起來應(yīng)該檢查數(shù)組中是否存在值,但它實際上檢查原型鏈中屬性是否存在 - 而不是值本身。

in 是做什么用的?

in運算符 檢查對象上是否存在屬性,而不是數(shù)組中是否存在值。例如:

const arr = [1, 2, 3];
console.log(1 in arr); // false
console.log('length' in arr); // true

這里in在檢查值時返回 false,1但在檢查length所有數(shù)組都具有的屬性時返回 true。

in 是如何運作的?

在幕后,in正在檢查給定屬性名稱的原型鏈而不是數(shù)組的實際值。JavaScript 數(shù)組具有有用的方法,例如push()在其原型中定義的方法。

當(dāng)我們in在數(shù)組上使用時,即使我們沒有明確地將它們視為鍵,它也會為這些原型方法返回 true:

const methods = [];
console.log('push' in methods); // true

總而言之,通過檢查對象的原型鏈in告訴我們哪些操作對對象有效,而不一定是它包含哪些值。

比較in 與 includes()

該includes()方法提供了一種更清晰的方法來檢查數(shù)組中的值:

const fruits = ['apple', 'banana', 'orange'];

console.log(fruits.includes('apple')); // true
console.log(1 in fruits); // false

雖然includes()直接檢查數(shù)組值,但in僅檢查原型中的可用屬性或方法。

in 使用常見的困惑

因為in其行為與 等方法不同includes(),所以它經(jīng)常會讓人絆倒。他們希望in像其他檢查數(shù)組內(nèi)容的函數(shù)一樣工作,但它是為不同的目的而設(shè)計的 - 驗證原型屬性,而不是值。

何時使用 in

in最適合檢查對象上是否存在屬性或方法而不是其特定值。一些好的用途包括:

  • 訪問前檢查對象鍵

  • 調(diào)用前驗證方法是否存在

  • 使用 for/in 循環(huán)迭代所有屬性

它對于直接檢查數(shù)組值并不理想。為此,請使用includes()、indexOf()等。

回顧和結(jié)論

總之,in 是JavaScript 中的運算符驗證原型屬性而不是對象值。雖然一開始令人困惑,但它具有有用的應(yīng)用程序,例如屬性存在檢查。關(guān)鍵是通過檢查原型鏈而不是直接檢查對象來理解它的工作原理。有了這些知識,in盡管其行為不直觀,但它是一個有用的操作符。

請注意,in和for..in是開放原型污染的常見陷阱:

const pollute = (obj, target, prop, value) => {
  if (target in obj) {
    obj[target][prop] = value
  }
}

pollute({}, '__proto__', 'foo', 'bar')
console.debug({}.foo) // 'bar'

許多 js 漏洞都圍繞這個問題得到解決。
請謹(jǐn)慎使用并回退Object.hasOwnProperty.call或Object.hasProperty文章來源地址http://www.zghlxwxcb.cn/article/336.html

到此這篇關(guān)于JavaScript 運算符 in 詳細(xì)說明與使用注意事項的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/336.html

如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請聯(lián)系站長進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【JavaScript】JavaScript 運算符 ④ ( 邏輯運算符 | 邏輯與運算符 && | 邏輯或運算符 || | 邏輯非運算符 ! )

    【JavaScript】JavaScript 運算符 ④ ( 邏輯運算符 | 邏輯與運算符 && | 邏輯或運算符 || | 邏輯非運算符 ! )

    JavaScript 中的 邏輯運算符 的作用是 對 布爾值 進(jìn)行運算 , 運算完成 后 的 返回值 也是 布爾值 ; 邏輯運算符 的 使用場景 : 條件控制語句 , 控制程序分支 ; 循環(huán)控制語句 , 控制程序循環(huán) ; 邏輯 運算符 列舉 : : 邏輯與運算 , 兩個操作數(shù)都為 true , 最終結(jié)果才為 true , 只要有一個操

    2024年03月20日
    瀏覽(34)
  • 【JavaScript】JavaScript 運算符 ⑤ ( 賦值運算符 | 基礎(chǔ)賦值運算符 與 復(fù)合賦值運算符 )

    【JavaScript】JavaScript 運算符 ⑤ ( 賦值運算符 | 基礎(chǔ)賦值運算符 與 復(fù)合賦值運算符 )

    JavaScript 賦值運算符種類 : 基礎(chǔ)賦值運算符 : 等于 : = ; 復(fù)合賦值運算符 : 加等 : += 減等 : -= 乘等 : *= 除等 : /= 取模等 : %= 有符號左移等 : = 有符號右移等 : = 無符號左移等 : = 無符號右移等 : = 在 JavaScript 語言中 , \\\" 賦值運算符 \\\" 的 作用是 為 變量 分配值 ; 最基礎(chǔ)的 \\\" 賦值運算

    2024年03月25日
    瀏覽(25)
  • JavaScript中一元運算符、三元運算符、循環(huán)

    前置自增: 后置自增: 區(qū)別 1.單獨使用前置和后置沒有區(qū)別。 2.前置自增:先自加再使用(記憶口訣:++在前,先加) 1.while循環(huán) 2.for循環(huán) 3.while循環(huán)和for循環(huán)區(qū)別 4.for循環(huán)嵌套 1.while循環(huán) 2.for循環(huán) 1.for循環(huán)執(zhí)行代碼 *作用:重復(fù)執(zhí)行代碼 *好處:把聲明起始值、循環(huán)條件、變

    2024年02月04日
    瀏覽(25)
  • 重學(xué)Java 5 idea詳細(xì)使用和運算符

    重學(xué)Java 5 idea詳細(xì)使用和運算符

    慢點跑,前面的路不好走 ? ? ? ? ? ? ? ? ? ?? ——24.1.14 1.概述:開發(fā)工具 2.特點: ? ? ? ? a、idea是java寫的,所以本地上必須有正確的jdk環(huán)境 ? ? ? ? b、idea自動保存 ? ? ? ? c、不用我們打開dos命令窗口執(zhí)行javac和java命令 ? ? ? ? d、idea有強(qiáng)大的快捷鍵、生成代碼、糾

    2024年02月01日
    瀏覽(18)
  • JavaScript =+運算符

    JavaScript =+運算符

    += 是 js 的加法運算,表達(dá)式 A += B 表示: A = A + B 。 如下: JavaScript 中 =+ 是一種特殊的賦值,表達(dá)式 A =+ B 表示:將 B 轉(zhuǎn)化為數(shù)字賦值給 A 。 = 是賦值, + 代表后面的數(shù)字為正數(shù);同理, =- 代表后面的數(shù)字為負(fù)數(shù)。 相當(dāng)于告訴編譯器,即將賦值的數(shù)值類型為數(shù)字類型,不要

    2024年02月12日
    瀏覽(25)
  • Javascript-中常用運算符

    目錄 數(shù)據(jù)類型 常見運算 算術(shù)運算符 比較運算符 邏輯運算符 賦值運算符 自增/減運算符 三目運算符 位運算符 在 JS 中有以下兩大類: 基本數(shù)據(jù)類型 數(shù)值類型(Number) 整數(shù) (int) 浮點數(shù)(float) 布爾類型(Boolean),有兩個值:true 和 false 字符串(String),它可以是單引號包

    2024年01月24日
    瀏覽(26)
  • 【JavaScript】相等運算符(== 和 ===)

    【JavaScript】相等運算符(== 和 ===)

    如果x和y的類型相同,JavaScript會用equals 方法比較這兩個值或?qū)ο蟆?沒有出現(xiàn)在表格中的情況都會返回 false。(表格中的方法都是內(nèi)部規(guī)定的) 對于 toNumber 方法: 對于 toPrimitive 方法: 第二行代碼之所以為 false,就是因為 true 先轉(zhuǎn)化為數(shù) 1,因此開始比較 \\\'aaa\\\' == 1 ;然后 ‘

    2024年02月07日
    瀏覽(24)
  • JavaScript系列從入門到精通系列第九篇:JavaScript中賦值運算符和關(guān)系運算符以及Unicode編碼介紹

    JavaScript系列從入門到精通系列第九篇:JavaScript中賦值運算符和關(guān)系運算符以及Unicode編碼介紹

    文章目錄 一:賦值運算符 1:= 2:+= 3:-= 4:*= 5:/= 6:%= 二:關(guān)系運算符? 1:數(shù)值類型關(guān)系運算 (一): (二):= (三): (四):= 2:其他類型關(guān)系運算 三:Unicode編碼表 ? ? ? ? =右側(cè)的值可以賦值給左側(cè)的變量。 ????????上邊這兩個寫法是一樣的。 ????????? ??????

    2024年02月08日
    瀏覽(21)
  • JavaScript系列之條件運算符

    條件(三元)運算符是 JavaScript 僅有的使用三個操作數(shù)的運算符。一個條件后面會跟一個問號 (?) ,如果條件為 true ,則問號后面的表達(dá)式 A 將會執(zhí)行;表達(dá)式 A 后面跟著一個冒號 (:) ,如果條件為 false ,則冒號后面的表達(dá)式 B 將會執(zhí)行。本運算符經(jīng)常作為 if 語句的簡

    2023年04月08日
    瀏覽(125)
  • JavaScript運算符及優(yōu)先級

    JavaScript運算符及優(yōu)先級

    一、算數(shù)運算符 算術(shù)運算符(+,-, * ,/,%【重要】,++【重要】,--) 其中 + 的左邊和右邊有 \\\" \\\", 表示拼接 i++,表示先賦值后+1? ? ?++i ,表示先+1后賦值? 同理減法也是如此 算數(shù)運算中,+ 可以進(jìn)行隱式迭代,將字符串?dāng)?shù)字轉(zhuǎn)化為Number類型 二、比較算數(shù)運算符 比較運算

    2024年02月07日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包