javascript中=、==、===区别详解

javascript中=、==、===区别详解

今天在项目开发过中发现在一个小问题。在判断n==""结果当n=0时 n==""结果也返回了true。虽然是个小问题,却有着大影响,所以决定深入分析下。

1、= 赋值运算符

//例:
var n=1;
console.log(n);//1
n=n+1;
console.log(n);//2

2、== 值比较运算符

值比较运算符在表达式两边的数据类型不一致时,会隐式转换为相同数据类型,然后对值进行比较.

//例:
var a="1";
var b=1;
console.log(a==b);//true
//例:
var a="";
var b=0;
console.log(a==b);//true;

说明:由于==只是对值进行比较,并不会进行数据类型比较,当两边表达式不一致时,会隐式转换成相同的数据类型,然后进行比较,

所以

0 是逻辑的 false

1 是逻辑的 true

空字符串是逻辑的 false

var a="";//解析为了false

var b=0;//解析为了false

所以a==b false=false 结果true

3、=== 值类型比较运算符

===表达式不仅进行值比较,还要进行数据类型进行比较。当类型不同时不会进行类型转换,在比较时除了对值进行比较以外,还比较两边的数据类型, 它是恒等运算符。

  //例:
    var a="1";
    var b=1;
    console.log(a===b);//false
    //例:
    var a="";
    var b=0;
    console.log(a===b);//false;
    console.log(false===0);//false;
    console.log("1" === 1);//false;

4、==与===区别

4.1在相同数据类型比较时==和===是有区别的。

4.2不同类型间比较,==会将两边表达式转化成同一类型后进行比较是否相等,===如果类型不同,不进行转换,结果就是不等。