1. 程式人生 > >JavaScript裡面三個等號和兩個等號的區別

JavaScript裡面三個等號和兩個等號的區別

== equality 等同,=== identity 恆等。

==, 兩邊值型別不同的時候,要先進行型別轉換,再比較。 
==,不做型別轉換,型別不同的一定不等。 

下面分別說明: 
先說 ===,這個比較簡單。下面的規則用來判斷兩個值是否===相等: 
1、如果型別不同,就[不相等] 
2、如果兩個都是數值,並且是同一個值,那麼[相等];(!例外)的是,如果其中至少一個是NaN,那麼[不相等]。(判斷一個值是否是NaN,只能用isNaN()來判斷) 
3、如果兩個都是字串,每個位置的字元都一樣,那麼[相等];否則[不相等]。 
4、如果兩個值都是true,或者都是false,那麼[相等]。 
5、如果兩個值都引用同一個物件或函式,那麼[相等];否則[不相等]。 

6、如果兩個值都是null,或者都是undefined,那麼[相等]。 
再說 ==,根據以下規則: 
1、如果兩個值型別相同,進行 === 比較。 
2、如果兩個值型別不同,他們可能相等。根據下面規則進行型別轉換再比較: 
a、如果一個是null、一個是undefined,那麼[相等]。 
b、如果一個是字串,一個是數值,把字串轉換成數值再進行比較。 
c、如果任一值是 true,把它轉換成 1 再比較;如果任一值是 false,把它轉換成 0 再比較。 
d、如果一個是物件,另一個是數值或字串,把物件轉換成基礎型別的值再比較。物件轉換成基礎型別,利用它的toString或者valueOf方法。 js核心內建類,會嘗試valueOf先於toString;例外的是Date,Date利用的是toString轉換。非js核心的物件,令說(比較麻 煩,我也不大懂) 

e、任何其他組合,都[不相等]。 

舉例: 
"1" == true 
型別不等,true會先轉換成數值 1,現在變成 "1" == 1,再把"1"轉換成 1,比較 1 == 1, 相等。 

= 賦值運算子 
== 等於 
=== 嚴格等於 
例: 
var a = 3; 
var b = "3"; 

a==b 返回 true 
a===b 返回 false 

因為a,b的型別不一樣 
===用來進行嚴格的比較判斷

相關推薦

JavaScript裡面等號等號區別

== equality 等同,=== identity 恆等。 ==, 兩邊值型別不同的時候,要先進行型別轉換,再比較。 ==,不做型別轉換,型別不同的一定不等。 下面分別說明: 先說 ===,這個比較簡單。下面的規則用來判斷兩個值是否===相等: 1、如果型別不同,就

等號等號區別(“===”與“==”的區別

1.===:三個等號我們稱為等同符,當等號兩邊的值為相同型別的時候,直接比較等號兩邊的值,值相同則返回true,若等號兩邊的值型別不同時直接返回false。      例:100===“100”   //返回false               abc===“abc”  

快速瞭解刺激戰場雪地地圖不為人知的五祕密超級打野點

玩刺激戰場新版本有哪些地方需要注意?雪地地圖已經在12月21號全平臺上線了,給大家分享一下玩雪地地圖中非常有用的五個注意點和兩個超級打野點,瞭解這些你就能快速上手新版本。   雪地地圖不為人知的五個祕密: 1、雪地地圖中,湖面都會結冰,汽車摩托車開在上面會打滑。 2、

微信獲取使用者資訊的介面ACCESS_TOKEN

  有一段時間沒有搞微信開發了 ,今天突然要改一下程式! 回頭一看 微信的幫助文件太tm的稀爛的,太難懂了,這做個筆記以後看著方便   微信有2個ACCESS_TOKEN,   1,基礎介面的token 獲取介面是   https://api.weixin.qq.com/cgi-bin/token?gran

Linux部署WEB專案,一臺伺服器部署Tomcat專案

      首先安裝JDK+Tomcat和配置好環境變數,部署第一個專案是比較簡單,本文主要是針對部署第二個專案的時候出現的一些問題和解決辦法進行敘述。可能解決辦法有很多種,目的都是為了解決遇到的問題。我們公司一直以來採用的是Nginx+Tomcat進行專案部署。  第一個專

typedef的四用途陷阱

用途一: 定義一種型別的別名,而不只是簡單的巨集替換。可以用作同時宣告指標型的多個物件。比如: char* pa, pb;  // 這多數不符合我們的意圖,它只聲明瞭一個指向字元變數的指標,  // 和一個字元變數; 以下則可行: typedef char* PCHAR;  

java中 一個等於號等於號等號區別

一個等號是賦值號,兩個等號是判斷號。賦值表示把右邊的值或引用賦給左邊的變數,判斷號表示返回符號兩邊的值是否相等,這裡的值包括引用。相等運算子"==",如果兩個運算元不是同一型別,則會先嚐試轉換型別在進行比較。嚴格相等運算子“==="首先計算其運算元的值,然後比較這兩個值,比較

類,類分別計算矩形面積圓面積,主類輸出矩形面積圓面積

【原始碼】 class Rect{     double width;     double height;     double getArea(){      &

PHP等號等號區別

在PHP中兩個變數間比較相等可以使用兩個等號或者三個等號,這兩種方式有什麼區別呢? 用兩個等號時,只要比較的兩個變數的值相同,輸出true,否則輸出false。 用三個等號時,除了兩個變數的值相同外,還必須這兩個變數的型別相同,才能輸出true,否則輸出false。 例如: $v1 = "1"; $v2 =

種演算法求正整數的最大公約數最小公倍數;求個數的最大公約數最小公倍數

第二次作業 題目:求兩個正整數的最大公約數和最小公倍數。 基本要求:1.程式風格良好(使用自定義註釋模板),兩種以上演算法解決最大公約數問題,提供友好的輸入輸出。 提高要求:1.三種以上演算法解決兩個正整數最大公約數問題。                    2.求

簡單區分軟體開發中幾概念:C/S結構B/S結構、層結構層結構、MVC層架構

C/S——客戶端/服務端,簡單講就是客戶端電腦上需要安裝專有的軟體來更伺服器交流,就像QQ。主要通過訊息的機制傳遞(當然也可以自己寫協議,遊戲就是這樣做的。) B/S——瀏覽器/服務端,你只要有瀏覽器就可以與伺服器進行通訊,不用再安裝專門的客戶端,通訊協議使用HTTP協議.

shell整理(37)===變量理解練習題

root 用戶編寫 歡迎腳本 1 /etc/profile2 ~/.bash_profile3 ~/.bashrc4 $PATH其中,/etc/profile是全局的環境變量,對所有用戶生效,而.bash_profile只對當前用戶啟作用。~/.bash_profile:每個用戶都可使用該文件輸入

關於偽類選擇器中一個冒號冒號的區別

fault 兼容 content 中一 radi view get top AD 只要兼容現代瀏覽器如 webkit、firefox、opera等瀏覽器,對於偽元素采用雙冒號的寫法,要是非要兼容IE瀏覽器,用CSS2的單冒號寫法比較安全。 首先,閱讀 w3c 對兩者的定義:

架構的維度層面

接口 分庫分表 基礎設施 標準 技術 新的 kafka html 網絡 轉自: https://cloud.tencent.com/info/e9695bd18d1c7752b3924bb3ac38cc95.html https://mp.weixin.qq.com/s

一道簡單的演算法題:不借助第變數來交換變數的值

今天做筆試碰到一道簡單的演算法題:不借助第三變數來交換兩個變數的值,記錄一下。 交換兩個變數的值的普遍做法都是藉助第三變數,這樣具有較高的可讀性。 a = 3 b = 5 t = a a = b b = t 但是,如果記憶體有限,只允許用2個變數呢? 強大的CS當然有辦法解決

C#語法中一個問號(?)問號(??)的運算子的含義區別

轉:http://www.cnblogs.com/xpvincent/p/9516708.html   (1)C#語法中一個個問號(?)的運算子是指:可以為 null 的型別。  MSDN上面的解釋: 在處理資料庫和其他包含不可賦值的元素的資料型別時,將 

大數相加大數相乘-------java版(曾經面試遇到過)

    瀏覽部落格偶然看到https://blog.csdn.net/Colin_Qichao/article/details/81538327中給出的大數相乘演算法,想到曾經有次面試時也被問到了該問題,於是仔細的研究了一下,並按照其思路寫了一個兩個大數相加的演算法(這個問題也被

Oracle 以當前時間為準,取前小時後小時的分鐘列舉

/*以當前時間為準,取前三個小時後兩個小時的分鐘列舉*/ with x as( select 開始時間+level * 1/24/60 as 分鐘 from (select sysdate+2/24 as 結束時間,sysdate-3/24 as 開始時間 fro

小貓咪的面向物件 一個類物件 用列表寫

class Cat: def __init__(self): self.name =None self.age = None self.color = None def run(self): pr

面向物件分析的模型層次

在面向物件分析中,主要由物件模型、動態模型和功能模型組成。物件模型是最基本、最重要、最核心的。   用面向物件方法開發軟體,通常需要建立3種形式的模型,它們分別是描述系統資料結構的物件模型,描述系統控制結構的動態模型和描述系統功能的功能模型。一個典型的軟體系統使用資料結構(物件模型),執行操作(