Mengapa pengendali js "+"?
phpcn_u1582
phpcn_u1582 2017-06-12 09:23:43
0
4
718

Kenapa +'11' boleh ditukar kepada nombor 11,
tetapi hasil 1 + '11' ialah rentetan '111'?

phpcn_u1582
phpcn_u1582

membalas semua(4)
淡淡烟草味

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:

  1. 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.

  2. Tambahkannya

    1. Jika sama ada nilai yang ditukar nilai atau rnilai ialah rentetan, kedua-dua nilai akan ditukar kepada rentetan untuk operasi penyambungan

    2. 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)

  3. 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' ----->

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'+ 是正负的正,相当于 Number('11')

1 + '11' 是加减的加,调用了内部的 toPrimitive 方法比较,其中一方是字符串的时候会尝试调用另一方的 toString Kaedah

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan