-1

==JavaScriptでは型強制との比較であることを理解しています。そして、次のステートメントが次のとおりであることを知っていますtrue

'' == false;
' ' == false;
'0' == false;
'\n' == false;

ただし、左側の「こんにちは」との比較が真であるとは言えません。

'hello' == true; // no this is false
'hello' == false; // no this is false
'hello' == 1; // no this is false
'hello' == 0; // no this is false

true「こんにちは」以外の結果と比較できる「こんにちは」はありますか?

4

3 に答える 3

4

これがあります:

if('hello') {
  alert('true') 
}

trueこれは、文字列が空でないため、またはとして評価されnullます。

比較したいので:

'hello' == String.fromCharCode.apply(String, [104, 101, 108, 108, 111])
于 2014-05-10T07:58:01.133 に答える
3

これはカウントされますか?

["hello"] == "hello"  // true
于 2014-05-10T07:59:40.513 に答える
2

ここに1つあります:

var x = ['H', 'e', 'l', 'l', 'o'];
x.toString = function() {
    return this.join("");
}

alert(x == "Hello");   // true

http://jsfiddle.net/jfriend00/KSgwb/

または別の:

var x = {
    toString: function() {return "Hello";}
}

alert(x == "Hello");   // true

http://jsfiddle.net/jfriend00/hKx9x/

の強制規則を==調べると、満足できる唯一のものは、すでに文字列である==何か、またはを返すメソッドを持つ何かであることがわかります。 "Hello""Hello".toString()"Hello"

これは、配列を結合する、文字列を直接返す、結合してその文字列を形成する一連の文字コードを処理するなど、必要なだけ多くの創造的な方法で実行できます...しかし、最終的には順番.toString()に戻る必要がありますテスト"Hello"を満たすために。==


比較対象のものを何らかの方法で含めることを許可していない場合、または要求に応じてその文字列を生成できない場合は、強制するように求められたときに文字列を生成するものを除いて、"Hello"満足するものは他にありません文字列。=="Hello"


Javascript の型強制規則の素人向けの説明は次のとおりです


簡単に言えば、文字列が関係する場合の強制ルールは次のとおりです。

  1. 両方の型が文字列の場合、比較はtrue2 つの文字列にまったく同じ文字が含まれている場合にのみ行われます。

  2. 一方が文字列で、もう一方が数値の場合は、文字列を数値に変換して、それを他の数値と比較してみてください。Number("Hello")isであるため、 NaN は別の数値にNaNできないため、これは数値に対しては決して機能しません。==

  3. 一方が文字列で、もう一方がオブジェクトのvalueOf場合、内部メソッドが定義されているか定義されtoStringていない場合は呼び出し、その結果を文字列と比較します。

  4. 一方が文字列で他方がブール値の場合、両方を数値に変換して比較します。Number("Hello")isであるため、数値に変換されたときにまたはにNaNなるブール値には決して一致しません。例: .01true == "1"

于 2014-05-10T08:09:34.953 に答える