js題集28

來源:互聯網
上載者:User

標籤:轉換   ebe   ==   console   邏輯   一個   stack   topic   flow   

//連結:http://cnodejs.org/topic/580743a627a1d99178a98fc5

 

1.求輸出:

([]+![])[+!![]]  //a

2.求輸出//評論裡的問題 同計算了

((-{})+[])[+![]]//N

 

 

解析:

//雖然平時沒看到有這麼用的 代碼裡這麼寫的要麼是瘋子 要麼是奇葩。。

 

看題目1 涉及到類型轉換

空數組 轉換成 數字 對應的是 0

空數組 轉換成 布爾 對應的是 true

。。。。

任意值轉換成數位 隱式方法  -somevalue +somevalue(not somevalue+somevalue)

其中 不可parseInt或者paresFloat的值會成為NaN

 

所以題目1 轉換

[]+![]

首先執行![]  轉換成布爾值 false

[]+布爾 統一變成 [].toString()+"false";

[]對應字串是“”

所以變成false

[+!![]]

[] 對應的布爾值是 true

!是邏輯符號 非 所以![] ,[]轉換成布爾值true,![] 就是false。

!![]就是true。

+true 轉換成數字 true對應數字1

題目一最後執行:("false")[1] 對應是輸出a。

 

然後就會很糾結一個問題

[] 是神馬情況

[] 對應 true ??

[] 對應 0

wtf..

var arr = [];

//於是提問的人 又拋了一個問題。。。(後來發現是stackoverflow上的。。)

console.log(‘Array:‘, arr);

if (arr) console.log("It‘s true!");

if (arr == false) console.log("It‘s false!");

if (arr && arr == false) console.log("...what??");

 

在進行轉換過程

比如 目標類型是布爾  會進行Boolean(source);

目標類型是 數字  會進行Number(source);

object 類型會變成true

至於數字

建議閱讀ES 規範 

Number([]);

Number([1]);

Numeber([1,2]);

Number({});傳入object

js題集28

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.