高分悬赏,javascrpt里面= == ===三个比较操作有什么区别,使用场景是什么
判断规则:一个等号是赋值操作,==先转换类型再比较,===先判断类型,如果不是同一类型直接为false。
1.一个等号(=)
$a = 1;表示把1赋值给变量啊
echo $a ; //输出 1
2.双等号(==)
$a = null; $b = ''; $c= 1;
双等号表示等于
echo ($a==$b)?1:0; //输出1
echo ($a==$c)?1?0;//输出0
3.三等于(===)
$a = null; $b = ''; $c = 0; $d = false;
三等于表示恒等于
echo ($a===$b)?1:0;//输出0
echo ($a===$c)?1:0;//输出0
echo ($a===$d)?1:0;//输出0
最苛刻比较?
1、两个的数据类型必须一样;
2、两个数据的值必须一样;
3、两个都不能是NaN;
4、两个都不能是对象(除非两个都是null);
这个意思?
=为赋值语句 这个无需多说 主要是== 和===
他们都是为都是判断是否相等
1.对于基础类型来说,他们是有区别的 首先同一类型的是一样的,不同类型之间 == 会进行类型转换成同类型再进行值判定 而===则类型不同直接false
2.对于Array,Object等高级类型,==和===是没有区别的,都是进行“指针地址”比较
3.基础类型和高级类型之间 也是有区别的 ==会把高级->基础进行值比较 而===也是看先看类型
应用场景的话无非就是说如果你需要判定数据在类型转换前是否相等 那就用===
=是赋值,这个无需赘述
==和===都是比较相等的运算符,只不过一个是不严格的,一个是严格的
==是只要值相等,无论类型是否一致,都返回true
===是全部相等,值,类型都必须相等,才返回true
console.log('11' == 11);//true
console.log('11' === 11);//false
总之这两个的关系就像java的 equals 和 == 的区别 ,一个是判断值是否相等,一个是判断堆栈内存地址是否相等
http://www.w3dev.cn/article/20151215/javascript-if-condition-is-false-value.aspx