SlideShare a Scribd company logo
1 of 13
JAVASCRIPT
EQUAL & IDENTICALLY EQUAL
         By Anney




                       06/08/12   1
開講前測驗




        06/08/12   2
開講前測驗 (2)




            06/08/12   3
EQUAL 與 IDENTICALLY EQUAL 的差異
•   相等 (Equal, ==) 或 不相等 (Not Equal, !=)
     • 強制轉換資料型別後,再進行比較。
•   全等 (Identically Equal, ===) 或 不全等 (Not Identically Equal, !==)
     • 直接比較而不強制轉換資料型別。




                                                                     06/08/12   4
相等 (EQUAL, ==) / 不相等 (NOT EQUAL, !=)
•   當比較兩個變數時
    • 資料型態相同:
      • == 跟 === 的結果一樣,直接比較數值是否相等。
    • 資料型態不同:
      • 就強制轉型 (type coercion) 後,再進行數值的比較。




                                            06/08/12   5
比較前轉換資料型態的規則
•   Boolean vs Number
     • false 轉成 0 ; true 轉成 1 ,再進行比較。
•   String vs. Number
     • 將 String 轉成 Number 再進行比較。
     • String 轉成 Number 可能會是 Number 或是 NaN 。
•   Object vs. non-Object
     • 利用 valueOf() 將 Object 的值取出後,再依照上述的規則比較。




                                               06/08/12   6
比較前轉換資料型態的規則 (2)
•   null  與   undefined  是相等的 ( 這裡指的是 == ,並非全等 ===) 。
•   在比較之前,不能將 null 與 undefined 轉換成其他值。
•   如果其中一個變數值是 NaN ,那麼在經過 == 的比較後,會 return false ,而  !
    = 會 return true 。
    有趣的是,即使兩個變數都是   NaN ,但是在經過 == 的比較後,還是會
    return false 。 ( 因為 NaN 不等於 NaN)
•   如果兩個變數型態都是物件 (Object) ,則比較兩者是否指向同一個物件,是就
    return true ,不是則 return false 。




                                               06/08/12   7
再測驗一次,答案還一樣嗎?




                06/08/12   8
全等 (IDENTICALLY EQUAL, ===) / 不全等
(NOT IDENTICALLY EQUAL, !==)




                             06/08/12   9
再測驗一次,答案還一樣嗎?




                06/08/12   10
REFERENCE
•   http://zh.wikipedia.org/wiki/ECMAScript
•   http://kuro.tw/blog/2011/12/01/javascript-equal-identically-equal




                                                                        06/08/12   11
參考書目
•   Professional JavaScript for Web Developers
•   JavaScript: The Good Parts




                                                 06/08/12   12
~ THE END ~

              06/08/12   13

More Related Content

More from LearningTech

Process control nodejs
Process control nodejsProcess control nodejs
Process control nodejsLearningTech
 
Vic weekly learning_20160504
Vic weekly learning_20160504Vic weekly learning_20160504
Vic weekly learning_20160504LearningTech
 
Reflection & activator
Reflection & activatorReflection & activator
Reflection & activatorLearningTech
 
Node child process
Node child processNode child process
Node child processLearningTech
 
Peggy elasticsearch應用
Peggy elasticsearch應用Peggy elasticsearch應用
Peggy elasticsearch應用LearningTech
 
Vic weekly learning_20160325
Vic weekly learning_20160325Vic weekly learning_20160325
Vic weekly learning_20160325LearningTech
 
D3js learning tips
D3js learning tipsD3js learning tips
D3js learning tipsLearningTech
 
Vic weekly learning_20151127
Vic weekly learning_20151127Vic weekly learning_20151127
Vic weekly learning_20151127LearningTech
 
20151120 ian cocos2d js
20151120 ian cocos2d js20151120 ian cocos2d js
20151120 ian cocos2d jsLearningTech
 
Vic weekly learning_20151120
Vic weekly learning_20151120Vic weekly learning_20151120
Vic weekly learning_20151120LearningTech
 

More from LearningTech (20)

Process control nodejs
Process control nodejsProcess control nodejs
Process control nodejs
 
Expression tree
Expression treeExpression tree
Expression tree
 
SQL 效能調校
SQL 效能調校SQL 效能調校
SQL 效能調校
 
flexbox report
flexbox reportflexbox report
flexbox report
 
Vic weekly learning_20160504
Vic weekly learning_20160504Vic weekly learning_20160504
Vic weekly learning_20160504
 
Reflection & activator
Reflection & activatorReflection & activator
Reflection & activator
 
Peggy markdown
Peggy markdownPeggy markdown
Peggy markdown
 
Node child process
Node child processNode child process
Node child process
 
20160415ken.lee
20160415ken.lee20160415ken.lee
20160415ken.lee
 
Peggy elasticsearch應用
Peggy elasticsearch應用Peggy elasticsearch應用
Peggy elasticsearch應用
 
Expression tree
Expression treeExpression tree
Expression tree
 
Vic weekly learning_20160325
Vic weekly learning_20160325Vic weekly learning_20160325
Vic weekly learning_20160325
 
D3js learning tips
D3js learning tipsD3js learning tips
D3js learning tips
 
git command
git commandgit command
git command
 
Asp.net MVC DI
Asp.net MVC DIAsp.net MVC DI
Asp.net MVC DI
 
Vic weekly learning_20151127
Vic weekly learning_20151127Vic weekly learning_20151127
Vic weekly learning_20151127
 
Mocha.js
Mocha.jsMocha.js
Mocha.js
 
R language
R languageR language
R language
 
20151120 ian cocos2d js
20151120 ian cocos2d js20151120 ian cocos2d js
20151120 ian cocos2d js
 
Vic weekly learning_20151120
Vic weekly learning_20151120Vic weekly learning_20151120
Vic weekly learning_20151120
 

20120525 equal identically_equal

  • 1. JAVASCRIPT EQUAL & IDENTICALLY EQUAL By Anney 06/08/12 1
  • 2. 開講前測驗 06/08/12 2
  • 3. 開講前測驗 (2) 06/08/12 3
  • 4. EQUAL 與 IDENTICALLY EQUAL 的差異 • 相等 (Equal, ==) 或 不相等 (Not Equal, !=) • 強制轉換資料型別後,再進行比較。 • 全等 (Identically Equal, ===) 或 不全等 (Not Identically Equal, !==) • 直接比較而不強制轉換資料型別。 06/08/12 4
  • 5. 相等 (EQUAL, ==) / 不相等 (NOT EQUAL, !=) • 當比較兩個變數時 • 資料型態相同: • == 跟 === 的結果一樣,直接比較數值是否相等。 • 資料型態不同: • 就強制轉型 (type coercion) 後,再進行數值的比較。 06/08/12 5
  • 6. 比較前轉換資料型態的規則 • Boolean vs Number • false 轉成 0 ; true 轉成 1 ,再進行比較。 • String vs. Number • 將 String 轉成 Number 再進行比較。 • String 轉成 Number 可能會是 Number 或是 NaN 。 • Object vs. non-Object • 利用 valueOf() 將 Object 的值取出後,再依照上述的規則比較。 06/08/12 6
  • 7. 比較前轉換資料型態的規則 (2) • null  與   undefined  是相等的 ( 這裡指的是 == ,並非全等 ===) 。 • 在比較之前,不能將 null 與 undefined 轉換成其他值。 • 如果其中一個變數值是 NaN ,那麼在經過 == 的比較後,會 return false ,而  ! = 會 return true 。 有趣的是,即使兩個變數都是   NaN ,但是在經過 == 的比較後,還是會 return false 。 ( 因為 NaN 不等於 NaN) • 如果兩個變數型態都是物件 (Object) ,則比較兩者是否指向同一個物件,是就 return true ,不是則 return false 。 06/08/12 7
  • 9. 全等 (IDENTICALLY EQUAL, ===) / 不全等 (NOT IDENTICALLY EQUAL, !==) 06/08/12 9
  • 11. REFERENCE • http://zh.wikipedia.org/wiki/ECMAScript • http://kuro.tw/blog/2011/12/01/javascript-equal-identically-equal 06/08/12 11
  • 12. 參考書目 • Professional JavaScript for Web Developers • JavaScript: The Good Parts 06/08/12 12
  • 13. ~ THE END ~ 06/08/12 13