それは、"==="(=が3つ)は型変換をしないで比較した結果を返します。"=="(=が2つ)は型変換をした後に比較した結果を返します。
なので、"=="の場合は完全に一致していない(型が一致していない)場合でも"true"を返すことがあります。これは普段あまり気に留めないですが、注意しないといけない場合もたくさんあります。
下に例を出しますが、「true == 1」はtrueを返しますが、「true === 1」はfalseを返します。
■例(ソースコード)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" applicationDPI="160" initialize="initializeHandler(event)"> <fx:Script> <![CDATA[ import mx.events.FlexEvent; protected function initializeHandler(event:FlexEvent):void { (true == 1) ? trace("true == 1: true") : trace("true == 1: false"); (true === 1) ? trace("true === 1: true") : trace("true === 1: false"); (null == undefined) ? trace("null == undefined: true") : trace("null == undefined: false"); (null === undefined) ? trace("null === undefined: true") : trace("null === undefined: false"); } ]]> </fx:Script> </s:Application> |
■結果
1 2 3 4 | true == 1: true true === 1: false null == undefined: true null === undefined: false |
http://www.c-point.com/javascript_tutorial/jsgrpComparison.htm
http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons
0 件のコメント:
コメントを投稿