suchen

Heim  >  Fragen und Antworten  >  Hauptteil

css – JavaScript-Operatortyp

Ich habe kürzlich jemanden getroffenjs的题,题目是这样的。
var str = 'abc' ;
typeof (str++)
最开始我以为返回的是String类型的值!但是结果却是Number,让我很费解!
我理解的思路是,首先拆开 str++ , 也就是str = str+1; 这不就是字符串拼接么。返回的还是str啊。
但是当我打印出来 str++ 之后 却是一个NaN的类型。typeof(NaN)der ein Zahlentyp ist!

Mit anderen Worten:
console.log(str++)console.log(str++)
console.log(str = str+1)console.log(str = str+1)
sind nicht gleichwertig!

Entschuldigung, warum ist das so? ?

習慣沉默習慣沉默2767 Tage vor672

Antworte allen(5)Ich werde antworten

  • 某草草

    某草草2017-06-12 09:33:29

    javascript高级程序设计中写了,++--是递增递减的一元操作符,只能操作一个数据,和加性操作符+是不一样的,
    他首先会把操作数转换为Number类型,然后进行加一或减一操作。所以str = str+1 不等于 str++

    Antwort
    0
  • 学习ing

    学习ing2017-06-12 09:33:29

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

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-12 09:33:29

    console.log(str++) ++会尝试将str转为数字,自动转型不成功变为NaN

    console.log(str = str+1) +此时尝试拼接字符串,变为abc1

    Antwort
    0
  • 黄舟

    黄舟2017-06-12 09:33:29

    js中并没有什么东西保证 a++ 和 a=a+1 是等价的。

    ++只有<number>重载,+<string, string><number, number>重载。就算不考虑行为,类型上就已经不等价。

    其他语言也许有,不应该和JS弄混。

    Antwort
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-12 09:33:29

    首先,你的理解有误区,str++ 可以不能完全等同于str+=1.在这里只需要理解为自增,但是自增只针对数字,所以str++会先进行隐式类型转换,str的值是'abc'转换之后是NaN. typeof NaN 返回值为Number

    Antwort
    0
  • StornierenAntwort