Qualcuno può spiegare perché questi confronti di disuguaglianza tra array JavaScript valgono per vero?Uguaglianza/disuguaglianza di array
[""] !== [""]
[1] !== [1]
[] !== []
[""] != [""]
[1] != [1]
[] != []
Qualcuno può spiegare perché questi confronti di disuguaglianza tra array JavaScript valgono per vero?Uguaglianza/disuguaglianza di array
[""] !== [""]
[1] !== [1]
[] !== []
[""] != [""]
[1] != [1]
[] != []
===
è rigorosa uguaglianza.
Quando si confrontano oggetti, restituirà true solo se entrambi i lati si riferiscono allo stesso oggetto.
[]
e []
sono due oggetti diversi (sebbene equivalenti), pertanto restituiscono false.
==
equivale all'uguaglianza.
Provvederà a forzare entrambi gli operandi allo stesso tipo, come descritto nello spec.
Tuttavia, confronta anche gli oggetti per identità referenziale.
Si noti che il confronto di stringhe letterali restituisce true ("a" === "a"), ma il confronto tra gli oggetti String produce false: new String ("a ") === nuova stringa (" a "). Concludo quindi che i letterali delle stringhe non vengono trattati come oggetti e "internati" in modo simile al linguaggio Java. –
@normc: No. A differenza di Java, Javascript ha una stringa _primitive_ type, proprio come i numeri. 'new String (" a ")' lo inserisce in un oggetto. Ad esempio, 'var a =" a "; a.b = 2; alert (a.b); // undefined' – SLaks
@normc: Gli oggetti stringa box non vengono quasi mai utilizzati; tutte le operazioni con le stringhe restituiscono le primitive. – SLaks
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators –
@GeorgeCummins Beh, sarebbe lo stesso nella maggior parte delle lingue. –
myHouse e yourHouse sono entrambe case ma myHouse! == yourHouse -> true – Xotic750