Dường như ký tự mà bạn đang sử dụng thực sự dài hơn ký hiệu trừ thực tế (dấu gạch nối).
-
Trên cùng là những gì bạn đang sử dụng, dưới cùng là những gì dấu trừ nên được. Bạn dường như đã biết điều đó rồi, vì vậy bây giờ hãy xem tại sao Javascript làm điều này.
Ký tự mà bạn sử dụng thực sự là dấu không gian ogham là ký tự khoảng trắng, do đó, về cơ bản nó được hiểu là giống như một khoảng trắng, có nghĩa là câu lệnh của bạn trông giống như alert(2+ 40)
Javascript.
Có những nhân vật khác như thế này trong Javascript. Bạn có thể xem danh sách đầy đủ ở đây trên Wikipedia .
Một điều thú vị tôi nhận thấy về nhân vật này là cách Google Chrome (và có thể các trình duyệt khác) diễn giải nó trong thanh trên cùng của trang.
Nó là một khối với 1680
bên trong của nó. Đó thực sự là số unicode cho dấu không gian ogham. Nó chỉ là máy của tôi làm điều này, nhưng nó là một điều kỳ lạ.
Tôi quyết định thử điều này bằng các ngôn ngữ khác để xem điều gì xảy ra và đây là kết quả mà tôi nhận được.
Ngôn ngữ không hoạt động trong:
Python 2 & 3
>> 2+ 40
File "<stdin>", line 1
2+ 40
^
SyntaxError: invalid character in identifier
Hồng ngọc
>> 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 (bên trong main
phương thức)
>> 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
Đi
>> 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.
Ngôn ngữ nó hoạt động trong:
Kế hoạch
>> (+ 2 40)
=> 42
C #
(bên trong Main()
phương thức)
Console.WriteLine(2+ 40);
Output: 42
Perl 6
>> ./perl6 -e'say 2+ 40'
42