css - javaScript 的typeof 操作符
習慣沉默
習慣沉默 2017-06-12 09:31:29
0
5
676

最近遇見一道js的題,題目是這樣的。
var str = 'abc' ;
typeof (str );
最開始我以為回傳的是String類型的值!但結果是Number,讓我很費解!
我理解的思路是,先拆開 str , 也就是str = str 1; 這不就是字串拼接麼。返回的還是str啊。
但是當我印出來 str 之後 卻是一個NaN的型別。 typeof(NaN)就是一個Number型別!

也就是說
console.log(str )
console.log(str = str 1)
並不是等價的!

請問這是為什麼? ?

習慣沉默
習慣沉默

全部回覆(5)
某草草

javascript高級程式設計中寫了,++--是遞增遞減的一元操作符,只能操作一個數據,和加性操作符+是不一樣的,
他首先會把操作數轉換為Number類型,然後進行加一或減一操作。所以str = str+1 不等於 str++

学习ing

因為在 str++的時候,js已經將str的字串型別隱性轉換成數字型別

过去多啦不再A梦

console.log(str++) ++會嘗試將str轉為數字,自動轉型不成功變成NaN

console.log(str = str+1) +此時嘗試拼接字串,變成abc1

黄舟

js中並沒有什麼東西保證 a++ 和 a=a+1 是等價的。

++只有重載,+重載。就算不考慮行為,類型上已經不等價。

其他語言也許有,不該跟JS搞混。

曾经蜡笔没有小新

首先,你的理解有誤區,str++ 可以不能完全等同於str+=1.在這裡只需要理解為自增,但是自增只針對數字,所以str++會先進行隱式類型轉換,str的值是' abc'轉換之後是NaN. typeof NaN 回傳值為Number

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板