css - opérateur de type javaScript
習慣沉默
習慣沉默 2017-06-12 09:31:29
0
5
670

J'ai récemment rencontré quelqu'unjs的题,题目是这样的。
var str = 'abc' ;
typeof (str++)
最开始我以为返回的是String类型的值!但是结果却是Number,让我很费解!
我理解的思路是,首先拆开 str++ , 也就是str = str+1; 这不就是字符串拼接么。返回的还是str啊。
但是当我打印出来 str++ 之后 却是一个NaN的类型。typeof(NaN)qui est du type Numéro !

En d'autres termes,
console.log(str++)console.log(str++)
console.log(str = str+1)console.log(str = str+1)
ne sont pas équivalents !

Excusez-moi, pourquoi ça ? ?

習慣沉默
習慣沉默

répondre à tous(5)
某草草

Écrit en programmation JavaScript avancée,++--是递增递减的一元操作符,只能操作一个数据,和加性操作符+是不一样的,
他首先会把操作数转换为Number类型,然后进行加一或减一操作。所以str = str+1 不等于 str++

学习ing

Parce que lors de l'utilisation de str++, js a implicitement converti le type de chaîne de str en un type numérique

过去多啦不再A梦

console.log(str++) ++ essaiera de convertir str en nombre si la conversion automatique échoue, il deviendra NaN

.

console.log(str = str+1) +À ce moment, essayez d'épisser la chaîne et elle devient abc1

黄舟

Il n'y a rien dans js qui garantit que a++ et a=a+1 sont équivalents.

++只有<number>重载,+<string, string><number, number>Recharger. Même si le comportement n’est pas pris en compte, les types ne sont plus équivalents.

D'autres langages peuvent exister, et ne doivent pas être confondus avec JS.

曾经蜡笔没有小新

Tout d'abord, votre compréhension est fausse. str++ n'est pas complètement équivalent à str+=1 Ici, il doit seulement être compris comme un auto-incrémentation, mais l'auto-incrémentation ne s'applique qu'aux nombres, donc str++ effectuera d'abord une conversion de type implicite, et la valeur de str est 'abc' est NaN après conversion. La valeur de retour de typeof NaN est Number

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal