AngularJS:是0 == 2?

jaz*_*lue 12 angularjs

我在这里挠头.我正在使用angularJS并尝试使用包含对parseInt的调用的表达式.

{{0 == 2}}  
Run Code Online (Sandbox Code Playgroud)

... 按预期打印错误.)

但是,当我尝试时:

{{parseInt(0) == parseInt(2)}} 
Run Code Online (Sandbox Code Playgroud)

......打印出来...... 真实!

这怎么可能?

Muh*_*sin 13

Angular不使用JavaScript eval()来计算表达式.相反,Angular的$parse服务处理这些表达式.

Angular表达式无法访问全局变量,如 window,documentlocation.这种限制是故意的.它可以防止意外访问全局状态 - 这是微妙错误的常见来源.

参考

在你的HTML中

这两个parseInt(0)parseInt(2)是不确定的在你的HTML.

所以{{undefined==undefined}}true.Beacause parseInt是一个Javascript你不能访问function.So parseInt在侧功能{{}}.[这里parseInt不是范围变量]

如果你想这样做,

parseInt在你的控制器中定义,

$scope.parseInt = parseInt;
Run Code Online (Sandbox Code Playgroud)

然后你可以parseInt在你的HTML中使用该方法


CD.*_*D.. 7

那是因为parseInt你的范围没有定义.

http://jsfiddle.net/halirgb/Lvc0u55v/

  • 他的意思是"parseInt()",因为函数未在您的范围中定义.`parseInt`是一个Javascript函数,但在{{}}内,Angular并不认为它是Javascript.它将其映射到控制器的范围.因此`undefined == undefined`等于true. (2认同)