Memandangkan jawapan ini wujud sebelum ES6, jawapan ini diambil daripada ES5.
+'11'
Sumber jawapan: ECMAScript5.1 11.4.6
Operasi unary + menukar nilai operasinya kepada nombor Jangan tanya mengapa, ia ditakrifkan dalam spesifikasi.
1 + '11'
Sumber jawapan: ECMAScript5.1 11.6.1
Langkah operasi tambah:
Tukarkan nilai kiri dan kanan kepada metataip (seperti rentetan dan nombor) dahulu; contohnya, Boolean akan ditukar kepada nombor, dan objek biasanya akan ditukar kepada rentetan, dsb.
Tambahkannya
Jika sama ada nilai yang ditukar nilai atau rnilai ialah rentetan, kedua-dua nilai akan ditukar kepada rentetan untuk operasi penyambungan
Jika tidak, tukar kedua-dua nilai dan nilai kepada nombor, dan kemudian lakukan operasi tambah pada nombor; (Sebagai contoh, jenis elemen penukaran Boolean bukan rentetan, tetapi masih Boolean, jadi apabila menilai cabang ini di sini, Boolean Tukar kepada nombor 1 atau 0)
Pengendali unary + menukarkan operannya kepada jenis Nombor.
1+'11' ---->
Jika salah satu operan adalah daripada jenis rentetan, tukarkan operan yang satu lagi kepada rentetan dan kembalikan hasil penggabungan dua rentetan itu.
+'11'
Sumber jawapan: ECMAScript5.1 11.4.6
Operasi unary
+
menukar nilai operasinya kepada nombor Jangan tanya mengapa, ia ditakrifkan dalam spesifikasi.1 + '11'
Sumber jawapan: ECMAScript5.1 11.6.1
Langkah operasi tambah:
Tukarkan nilai kiri dan kanan kepada metataip (seperti rentetan dan nombor) dahulu; contohnya, Boolean akan ditukar kepada nombor, dan objek biasanya akan ditukar kepada rentetan, dsb.
Tambahkannya
Jika sama ada nilai yang ditukar nilai atau rnilai ialah rentetan, kedua-dua nilai akan ditukar kepada rentetan untuk operasi penyambungan
Jika tidak, tukar kedua-dua nilai dan nilai kepada nombor, dan kemudian lakukan operasi tambah pada nombor; (Sebagai contoh, jenis elemen penukaran Boolean bukan rentetan, tetapi masih Boolean, jadi apabila menilai cabang ini di sini, Boolean Tukar kepada nombor 1 atau 0)
Kembalikan hasil.
javascript
是弱类型语言,这是一个原因。再有,如果+
和数字放在一起,被认为是数字的正数,例如var a = +11
等同于var a = 11
。这样,而+
只有在字符串拼接时才会作为拼接的运算符。而+ '11'
就不算是拼接字符串,因为根本没有拼接字符串。所以js
会将'11'
隐性的转换为11
.Saya juga seorang pemula dalam
js
. Ini pemahaman saya. Jika salah, anda dialu-alukan untuk membetulkan saya.+'11' ----->
1+'11' ----> Jika salah satu operan adalah daripada jenis rentetan, tukarkan operan yang satu lagi kepada rentetan dan kembalikan hasil penggabungan dua rentetan itu.+'11'
的+
是正负的正,相当于Number('11')
1 + '11'
是加减的加,调用了内部的toPrimitive
方法比较,其中一方是字符串的时候会尝试调用另一方的toString
Kaedah