角度条件的工作方式与纯javascript相同吗?

时间:2015-06-17 13:48:10

标签: javascript angularjs angularjs-directive equality

我想知道在角度指令中的身份===和等级==运算符之间是否存在相同的差异,就像在纯JavaScript中一样?

例如是

ng-if="value === 'foo'

优于

ng-if="value == 'foo'

我检查的是

ng-if="true == 1

但是

ng-if="true === 1

没有,所以它看起来像纯js一样工作。另一方面,在角度源中,他们只使用相等检查,甚至在js身份中也是首选。

https://github.com/angular/angular.js/search?utf8=%E2%9C%93&q=ng-if

我们应该在角度指令中使用哪个运算符?

编辑: 为了澄清 - 我不是在询问javascript条件,这已经在堆栈上得到了解答,我的问题是 - 纯js和角度指令条件之间的条件有什么不同吗?

1 个答案:

答案 0 :(得分:0)

" =="之间的主要区别和" ==="运算符是前者通过进行类型修正来比较变量,例如如果你将数字与带有数字文字的字符串进行比较,==允许这样做,但===不允许这样做,因为它不仅检查值而且还检查两个变量的类型,如果两个变量不相同输入" ==="返回false,而" =="返回true。

由于JavaScript支持严格相等和类型转换相等,因此了解哪个运算符用于哪个操作非常重要。正如我所说,===考虑变量的类型,而= =根据变量的值进行类型校正,以下是" =="之间的两个更多差异。和" ===" JavaScript编程语言中的运算符:

1)当我们比较不同类型的两个变量时,例如带有字符串的布尔值或带有使用==运算符的字符串的数字,它会自动将一种类型转换为另一种类型,并根据内容相等性返回值,而===运算符是Java中的严格相等运算符,并且仅当两个变量都返回时才返回true相同的类型,也包含相同的值。使用JavaScript中的以下==和===运算符示例将会非常清楚:

0==false   // true, because false is equivalent of 0
0===false  // false, because both operands are of different type
2=="2"     // true, auto type coercion, string converted into number
2==="2"    // false, since both operands are not of same type

2)" =="运算符被称为类型强制运算符,并且如果两个值相同并且使用==运算符进行比较,则任何时候都会发生类型强制。另一方面,===被称为严格相等运算符。它与Java的相等运算符(==)非常相似,如果比较两个类型彼此不兼容的变量,则会产生编译错误。事实上,你应该总是使用" ==="用于比较变量的运算符或仅用于任何比较。