Sembra che il personaggio che stai usando sia in realtà più lungo di quello che è il segno meno (un trattino).
-
La parte superiore è ciò che stai usando, la parte inferiore è ciò che dovrebbe essere il segno meno. Sembra che tu lo sappia già, quindi ora vediamo perché Javascript lo fa.
Il personaggio che usi è in realtà il segno dello spazio ogham che è un carattere di spazio bianco, quindi è sostanzialmente interpretato come la stessa cosa di uno spazio, il che significa che la tua affermazione assomiglia alert(2+ 40)
a Javascript.
Ci sono altri personaggi come questo in Javascript. Puoi vedere un elenco completo qui su Wikipedia .
Qualcosa di interessante che ho notato di questo personaggio è il modo in cui Google Chrome (e possibili altri browser) lo interpretano nella barra superiore della pagina.
È un blocco con 1680
dentro di esso. Questo è in realtà il numero unicode per il segno dello spazio ogham. Sembra che sia solo la mia macchina a farlo, ma è una cosa strana.
Ho deciso di provarlo in altre lingue per vedere cosa succede e questi sono i risultati che ho ottenuto.
Lingue in cui non funziona:
Python 2 e 3
>> 2+ 40
File "<stdin>", line 1
2+ 40
^
SyntaxError: invalid character in identifier
Rubino
>> 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 (all'interno del main
metodo)
>> 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
Partire
>> 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.
Lingue in cui funziona:
schema
>> (+ 2 40)
=> 42
C #
(all'interno del Main()
metodo)
Console.WriteLine(2+ 40);
Output: 42
Perl 6
>> ./perl6 -e'say 2+ 40'
42