ปรากฏว่าตัวละครที่คุณใช้นั้นยาวกว่าเครื่องหมายลบจริง (ยัติภังค์) จริง
-
ด้านบนคือสิ่งที่คุณกำลังใช้ด้านล่างคือเครื่องหมายลบควรเป็น คุณดูเหมือนจะรู้แล้วตอนนี้ดังนั้นมาดูกันว่าทำไม Javascript ถึงทำเช่นนี้
อักขระที่คุณใช้จริง ๆ แล้วเป็นเครื่องหมายช่องว่างของ oghamซึ่งเป็นอักขระช่องว่างดังนั้นโดยทั่วไปจะถูกตีความว่าเป็นสิ่งเดียวกับช่องว่างซึ่งหมายความว่าคำสั่งของคุณดูเหมือนalert(2+ 40)
จาวาสคริปต์
มีตัวละครอื่น ๆ เช่นนี้ใน Javascript คุณสามารถดูรายการเต็มรูปแบบที่นี่ในวิกิพีเดีย
สิ่งที่น่าสนใจที่ฉันสังเกตเห็นเกี่ยวกับตัวละครนี้คือวิธีที่ Google Chrome (และเบราว์เซอร์อื่น ๆ ที่เป็นไปได้) ตีความมันในแถบด้านบนของหน้า
มันเป็นบล็อกที่มี1680
ด้านในของมัน นั่นคือหมายเลขยูนิโค้ดสำหรับเครื่องหมายช่องว่างของ ogham มันดูเหมือนจะเป็นแค่เครื่องจักรของฉันที่ทำสิ่งนี้ แต่มันแปลก
ฉันตัดสินใจลองใช้ภาษาอื่นเพื่อดูว่าเกิดอะไรขึ้นและนี่คือผลลัพธ์ที่ฉันได้รับ
ภาษาที่ใช้ไม่ได้:
Python 2 และ 3
>> 2+ 40
File "<stdin>", line 1
2+ 40
^
SyntaxError: invalid character in identifier
ทับทิม
>> 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
วิธีการ)
>> 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
ค
>> 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
ไป
>> 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.
ภาษาใช้งานได้:
โครงการ
>> (+ 2 40)
=> 42
C #
(ภายในMain()
วิธีการ)
Console.WriteLine(2+ 40);
Output: 42
Perl 6
>> ./perl6 -e'say 2+ 40'
42