2013/10/18

AS3:: オペレーター "===" について

ActionScript3:: オペレーターで "==="(=が3つ)という表現があります。"=="(=が2つ)と何が違うんでしょうか?

それは、"==="(=が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 件のコメント:

コメントを投稿