Kullandığınız karakterin gerçek eksi işaretinden (tire) daha uzun olduğu anlaşılıyor.
-
Üst kısım kullandığınız şey, alt kısım eksi işaretinin olması gerektiği. Bunu zaten biliyor gibisiniz, şimdi Javascript'in bunu neden yaptığını görelim.
Kullandığınız karakter aslında bir boşluk karakteri olan ogham boşluk işaretidir , bu nedenle temelde boşlukla aynı şey olarak yorumlanır, yani ifadeniz alert(2+ 40)
Javascript'e benziyor .
Javascript'te bunun gibi başka karakterler var. Vikipedi'de tam bir liste görebilirsiniz .
Bu karakter hakkında fark ettiğim ilginç bir şey, Google Chrome'un (ve diğer olası tarayıcıların) bunu sayfanın üst çubuğunda yorumlama şeklidir.
İçinde bir bloktur 1680
. Aslında ogham uzay işaretinin unicode numarası. Sadece bunu yapan benim makinem gibi görünüyor, ama garip bir şey.
Ne olduğunu görmek için bunu diğer dillerde denemeye karar verdim ve elde ettiğim sonuçlar bunlar.
Çalışmadığı diller:
Python 2 ve 3
>> 2+ 40
File "<stdin>", line 1
2+ 40
^
SyntaxError: invalid character in identifier
Yakut
>> 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 ( main
yöntemin içinde )
>> 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
Git
>> 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.
Çalıştığı diller:
düzen
>> (+ 2 40)
=> 42
C #
( Main()
yöntemin içinde )
Console.WriteLine(2+ 40);
Output: 42
Perl 6
>> ./perl6 -e'say 2+ 40'
42