第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

可以(a == 1 && a == 2 && a == 3)評(píng)估為真嗎?

可以(a == 1 && a == 2 && a == 3)評(píng)估為真嗎?

元芳怎么了 2019-07-25 10:39:20
可以(a == 1 && a == 2 && a == 3)評(píng)估為真嗎?是否有可能在JavaScript中(a== 1 && a ==2 && a==3)進(jìn)行評(píng)估true?這是一家大型科技公司提出的面試問題。它發(fā)生在兩周前,但我仍在努力尋找答案。我知道我們從來沒有在日常工作中寫過這樣的代碼,但我很好奇。
查看完整描述

3 回答

?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

如果你利用了它的==工作方式,你可以簡單地創(chuàng)建一個(gè)帶有自定義toString(或valueOf)函數(shù)的對(duì)象,該函數(shù)可以在每次使用時(shí)更改它返回的內(nèi)容,使其滿足所有三個(gè)條件。

const a = {
  i: 1,
  toString: function () {
    return a.i++;
  }}if(a == 1 && a == 2 && a == 3) {
  console.log('Hello World!');}

這種方法的原因是由于使用了松散的等式運(yùn)算符。當(dāng)使用松散相等時(shí),如果其中一個(gè)操作數(shù)與另一個(gè)操作數(shù)的類型不同,則引擎將嘗試將一個(gè)操作數(shù)轉(zhuǎn)換為另一個(gè)操作數(shù)。如果左邊是一個(gè)對(duì)象,右邊是一個(gè)數(shù)字,它會(huì)嘗試通過首先調(diào)用valueOf它來將對(duì)象轉(zhuǎn)換為數(shù)字,如果它是可調(diào)用的,如果失敗,它將調(diào)用toString。我toString在這種情況下使用的僅僅是因?yàn)樗俏蚁氲降模?code>valueOf會(huì)更有意義。如果我改為返回一個(gè)字符串toString,那么引擎會(huì)嘗試將字符串轉(zhuǎn)換為一個(gè)數(shù)字,給出相同的最終結(jié)果,但路徑稍長。


查看完整回答
反對(duì) 回復(fù) 2019-07-25
?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

我無法抗拒 - 其他答案無疑是正確的,但你真的無法超越以下代碼:

var a? = 1;var a = 2;var ?a = 3;if(a?==1 && a== 2 &&?a==3) {
    console.log("Why hello there!")}

請(qǐng)注意if語句中的奇怪間距(我從您的問題中復(fù)制)。它是半角度Hangul(對(duì)于那些不熟悉的人來說是朝鮮語),它是一個(gè)Unicode空格字符,ECMA腳本不將其解釋為空格字符 - 這意味著它是標(biāo)識(shí)符的有效字符。因此,有三個(gè)完全不同的變量,一個(gè)是在a之后的韓文,一個(gè)是之前的,另一個(gè)只是一個(gè)。_為了便于閱讀,替換空格,相同的代碼如下所示:

var a_ = 1;var a = 2;var _a = 3;if(a_==1 && a== 2 &&_a==3) {
    console.log("Why hello there!")}

查看Mathias的變量名稱驗(yàn)證器上的驗(yàn)證。如果這個(gè)奇怪的間距實(shí)際上包含在他們的問題中,我確信這是這種答案的暗示。

不要這樣做。認(rèn)真。

編輯:我注意到(盡管不允許啟動(dòng)變量)零變寬連接器零寬度非連接字符也允許在變量名中 - 請(qǐng)參閱使用零寬度字符混淆JavaScript - 優(yōu)點(diǎn)和缺點(diǎn)?

這將如下所示:

var a= 1;var a?= 2; //one zero-width charactervar a??= 3; //two zero-width characters (or you can use the other one)if(a==1&&a?==2&&a??==3) {
    console.log("Why hello there!")}


查看完整回答
反對(duì) 回復(fù) 2019-07-25
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

有可能的!

var i = 0;with({
  get a() {
    return ++i;
  }}) {
  if (a == 1 && a == 2 && a == 3)
    console.log("wohoo");}

這在with語句中使用getter 來a評(píng)估三個(gè)不同的值。

...這仍然不意味著應(yīng)該在實(shí)際代碼中使用...

更糟糕的是,這個(gè)技巧也適用于===。

 var i = 0;

  with({
    get a() {
      return ++i;
    }
  }) {
    if (a !== a)
      console.log("yep, this is printed.");
  }


查看完整回答
反對(duì) 回復(fù) 2019-07-25
  • 3 回答
  • 0 關(guān)注
  • 581 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)