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

資訊專欄INFORMATION COLUMN

js雙等號(hào)探索(二): a==3&&a==4 為true ?

cheng10 / 2443人閱讀

摘要:前言為是可以實(shí)現(xiàn)的。在中,非對(duì)象參數(shù)將被視為一個(gè)凍結(jié)的普通對(duì)象,因此會(huì)返回。注意所以一定要是對(duì)象,如果是非對(duì)象的其他基本類型如,,被視為凍結(jié)對(duì)象,不能重寫,則不起效果。第四步為這時(shí)已經(jīng)為,運(yùn)行返回值也為。最后為如上所示為,為,則為其他鏈接

前言

a==3 && a==4True是可以實(shí)現(xiàn)的。
具體代碼如下所示:

let a=[];
var x=3;
a.valueOf=()=>{
   return x++
};
a==3 && a==4 ? console.log("succeed") : console.log("failed");
//succeed

下面妹子我將一一解析其原理。

第一步 let a=[]

定義一個(gè)變量a,并賦值一個(gè)對(duì)象,方便后面重寫它的valueOf方法。
可以通過(guò)Object.isFrozen()方法來(lái)判斷一個(gè)對(duì)象的屬性是否可以重寫。

根據(jù) MDN Web 文檔-Object.isFrozen():https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen

在 ES5 中,如果參數(shù)不是一個(gè)對(duì)象類型,將拋出一個(gè)TypeError異常。在 ES2015 中,非對(duì)象參數(shù)將被視為一個(gè)凍結(jié)的普通對(duì)象,因此會(huì)返回true
Object.isFrozen("");
// true                         (ES2015 code)

Object.isFrozen({});
// false                        (ES2015 code)

注意:所以a一定要是對(duì)象,如果a是非對(duì)象的其他基本類型如String,,被視為凍結(jié)對(duì)象,不能重寫valueOf,則不起效果。

let a=""; //非對(duì)象
var x=3;
a.valueOf=()=>{
   return x++
};
a==3 && a==4 ? console.log("succeed") : console.log("failed");
//failed
第二步 a==3 && a==4

根據(jù) MDN Web 文檔-運(yùn)算符優(yōu)先級(jí):[https://developer.mozilla.org...
](https://developer.mozilla.org...

==的優(yōu)先級(jí)為10 ,&&的優(yōu)先級(jí)為6==的優(yōu)先級(jí)更高,所以先運(yùn)行a==3,再運(yùn)行a==3,最后進(jìn)行&&判斷。

第三步 a==3為True

根據(jù) MDN Web 文檔-比較操作符:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

如果一個(gè)對(duì)象與數(shù)字或字符串相比較,JavaScript會(huì)嘗試返回對(duì)象的默認(rèn)值。操作符會(huì)嘗試通過(guò)方法valueOf和toString將對(duì)象轉(zhuǎn)換為其原始值(一個(gè)字符串或數(shù)字類型的值)。

所以將會(huì)運(yùn)行a.valueOf()x1

let a=[];
var x=3;
a.valueOf=()=>{
   return x++
};
if(a==3){
  console.log(x); 
}
//4
第四步 a==4為True

這時(shí)x已經(jīng)為4,運(yùn)行a.valueOf返回值也為4

let a=[];
var x=3;
a.valueOf=()=>{
   return x++
};
if(a==3){
  console.log(x); 
}
//4
if(a==4){
  console.log(x); 
}
//5
最后a==3 && a==4 為true

如上所示a==3Truea==4True,則true && trueTrue

let a=[];
var x=3;
a.valueOf=()=>{
   return x++
};
a==3 && a==4 ? console.log("succeed") : console.log("failed");
//succeed
其他鏈接

https://raoenhui.github.io/js/2018/09/22/compare1/

https://raoenhui.github.io/js/2018/09/23/compare2/

https://raoenhui.github.io/js/2018/09/28/compare3/

Happy coding .. :)

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

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

相關(guān)文章

  • 解析JavaScript判斷兩個(gè)值相等的方法

      本篇文章主要是講述在JavaScript中判斷兩個(gè)值相等,不要認(rèn)為很簡(jiǎn)單,要注意的是在JavaScript中存在4種不同的相等邏輯。  ECMAScript 是 JavaScript 的語(yǔ)言規(guī)范,在ECMAScript 規(guī)范中存在四種相等算法,如下圖所示:  上圖中每個(gè)依次寫下來(lái),很多前端應(yīng)該熟悉嚴(yán)格相等和非嚴(yán)格相等,但對(duì)于同值零和同值卻不熟悉,現(xiàn)在就依次下面四種方法。  同值  同值零  非...

    3403771864 評(píng)論0 收藏0
  • velocity的基本使用 && 實(shí)例講解

    摘要:的簡(jiǎn)介是一個(gè)基于的模板引擎。使用,也可以寫成。所以,應(yīng)該使用規(guī)范的格式書寫現(xiàn)在知道變量是而不是。如當(dāng)頁(yè)面中包含,如果對(duì)象有值,將顯示的值,如果不存在對(duì)象同,則在頁(yè)面中將顯示字符。 velocity的簡(jiǎn)介 Velocity是一個(gè)基于java的模板引擎(template engine)。它允許任何人僅僅簡(jiǎn)單的使用模板語(yǔ)言(template language)來(lái)引用由java代碼定義的對(duì)象,...

    zhunjiee 評(píng)論0 收藏0
  • velocity的基本使用 && 實(shí)例講解

    摘要:的簡(jiǎn)介是一個(gè)基于的模板引擎。使用,也可以寫成。所以,應(yīng)該使用規(guī)范的格式書寫現(xiàn)在知道變量是而不是。如當(dāng)頁(yè)面中包含,如果對(duì)象有值,將顯示的值,如果不存在對(duì)象同,則在頁(yè)面中將顯示字符。 velocity的簡(jiǎn)介 Velocity是一個(gè)基于java的模板引擎(template engine)。它允許任何人僅僅簡(jiǎn)單的使用模板語(yǔ)言(template language)來(lái)引用由java代碼定義的對(duì)象,...

    scq000 評(píng)論0 收藏0
  • 解析ES6變量賦值和基本數(shù)據(jù)類型

      let和const  let和const兩者并不存在變量提升  這里要說(shuō)明的是變量一定要在聲明后使用,否則報(bào)錯(cuò)。  vara=[];   for(vari=0;i<10;i++){   a[i]=function(){   console.log(i);   };   }   a[6]();//10  變量i是var聲明的,我們要知道這里在全局范圍內(nèi)都有效。我們要知道在每一次循環(huán)中,新的...

    3403771864 評(píng)論0 收藏0
  • js等號(hào)探索(三): [] == falseTrue,而!![] == falseFalse

    摘要:所以為為第二步轉(zhuǎn)成根據(jù)文檔比較操作符如果一個(gè)對(duì)象與數(shù)字或字符串相比較,會(huì)嘗試返回對(duì)象的默認(rèn)值。嘗試將數(shù)字字面量轉(zhuǎn)換為數(shù)字類型的值。 [] == false; //為True !![] == false; //為False 一、[] == false為True 第一步 轉(zhuǎn)成[] == 0 根據(jù) MDN Web 文檔-比較操作符:https://developer.mozilla.org...

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

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

0條評(píng)論

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