建設(shè)網(wǎng)站的英語怎么說做網(wǎng)站的網(wǎng)絡(luò)公司
本質(zhì): 二元操作符+規(guī)則
一般判斷規(guī)則:
- 如果操作數(shù)是對(duì)象,則對(duì)象會(huì)轉(zhuǎn)換為原始值
- 如果其中一個(gè)操作數(shù)是字符串的話,另一個(gè)操作數(shù)也會(huì)轉(zhuǎn)換成字符串,進(jìn)行字符串拼接
- 否則,兩個(gè)操作數(shù)都將轉(zhuǎn)換成數(shù)字或NaN,進(jìn)行加法操作
轉(zhuǎn)為原始數(shù)據(jù)類型的值的方法:
- Symbol.ToPrimitive
- Object.prototype.valueOf
- Object.prototype.toString
一.?[]的原值
- typeof [][Symbol.ToPrimitive] // undefined
- [].valueOf() // []
- [].toString() // ‘’
所以[] + [] 就相當(dāng)于 ''+'', 得到的是空字符串''
二.{}的原始值
- typeof {}[Symbol.ToPrimitive] // undefined
- ({}).valueOf() // {}
- ({}).toString() ?// '[object Object]'
注意事項(xiàng): {}+xx需要看成{};+xx才是得到和控制臺(tái)一樣的值
比如:
({} + []) 相當(dāng)于是'[object Object]' + '', 得到的是'[object Object]'
{} + [] 相當(dāng)于{}; + [], 分號(hào)說明語句結(jié)束了,所以要往后看,而+號(hào)本身有隱式轉(zhuǎn)換數(shù)字的功能, 所以+[]等于0
同理:
({} + {})是'[object Object][object Object]'
而{} + {}相當(dāng)于{}; + {},相當(dāng)于只需要看+{}, {}的原始值是'[object Object]',隱式轉(zhuǎn)換'[object Object]'為數(shù)字,'[object Object]'無法轉(zhuǎn)換為正常數(shù)字,所以變成NaN
因此:
[] + ???就相當(dāng)于([] + ???)
而{}的+運(yùn)算特殊一些:
{} + ??? 相當(dāng)于 +???轉(zhuǎn)換為數(shù)字, 得到0或者NaN
({} + ???) 相當(dāng)于分別得到{}的原始值和???的原始值, 即('[object Object]' +???的原始值)
綜上所述:
[]+[] =>得到?''
[]+{} =>得到 '[object Object]'
{} + [] =>得到 0
{} + {} => 得到NaN