Tampaknya karakter yang Anda gunakan sebenarnya lebih panjang dari tanda minus sebenarnya (tanda hubung).
-
Bagian atas adalah apa yang Anda gunakan, bagian bawah adalah tanda minus yang seharusnya. Anda sepertinya sudah tahu itu, jadi sekarang mari kita lihat mengapa Javascript melakukan ini.
Karakter yang Anda gunakan sebenarnya adalah tanda spasi ogham yang merupakan karakter spasi, jadi pada dasarnya diartikan sebagai hal yang sama dengan spasi, yang berarti bahwa pernyataan Anda mirip alert(2+ 40)
dengan Javascript.
Ada karakter lain seperti ini di Javascript. Anda dapat melihat daftar lengkapnya di sini di Wikipedia .
Sesuatu yang menarik yang saya perhatikan dari karakter ini adalah cara Google Chrome (dan kemungkinan peramban lain) mengartikannya di bilah atas halaman.
Itu adalah sebuah blok dengan 1680
bagian dalamnya. Itu sebenarnya nomor unicode untuk tanda ruang ogham. Tampaknya ini hanya mesin saya yang melakukan ini, tetapi ini adalah hal yang aneh.
Saya memutuskan untuk mencoba ini dalam bahasa lain untuk melihat apa yang terjadi dan ini adalah hasil yang saya dapatkan.
Bahasa yang tidak berfungsi di:
Python 2 & 3
>> 2+ 40
File "<stdin>", line 1
2+ 40
^
SyntaxError: invalid character in identifier
Rubi
>> 2+ 40
NameError: undefined local variable or method ` 40' for main:Object
from (irb):1
from /home/michaelpri/.rbenv/versions/2.2.2/bin/irb:11:in `<main>'
Java (di dalam main
metode)
>> System.out.println(2+ 40);
Main.java:3: error: illegal character: \5760
System.out.println(2+?40);
^
Main.java:3: error: ';' expected
System.out.println(2+?40);
^
Main.java:3: error: illegal start of expression
System.out.println(2+?40);
^
3 errors
PHP
>> 2+ 40;
Use of undefined constant 40 - assumed ' 40' :1
C
>> 2+ 40
main.c:1:1: error: expected identifier or '(' before numeric constant
2+ 40
^
main.c:1:1: error: stray '\341' in program
main.c:1:1: error: stray '\232' in program
main.c:1:1: error: stray '\200' in program
exit status 1
Pergilah
>> 2+ 40
can't load package: package .:
main.go:1:1: expected 'package', found 'INT' 2
main.go:1:3: illegal character U+1680
exit status 1
Perl 5
>> perl -e'2+ 40'
Unrecognized character \xE1; marked by <-- HERE after 2+<-- HERE near column 3 at -e line 1.
Bahasa itu berfungsi dalam:
Skema
>> (+ 2 40)
=> 42
C #
(di dalam Main()
metode)
Console.WriteLine(2+ 40);
Output: 42
Perl 6
>> ./perl6 -e'say 2+ 40'
42