Angularjs 角胡子评估-为什么这段代码会这样?

Angularjs 角胡子评估-为什么这段代码会这样?,angularjs,Angularjs,在以下代码中: <!doctype html> <html lang="en" ng-app> <head> <meta charset="utf-8"> <title>My HTML File</title> <link rel="stylesheet" href="bower_componen

在以下代码中:

<!doctype html>    
<html lang="en" ng-app>      
    <head>        
        <meta charset="utf-8">        
        <title>My HTML File</title>        
        <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" />        
        <script src="bower_components/angular/angular.js"></script>      
    </head>    
    <body>
        <div id="div1" style="display:none;">This disappears</div>
        <p>Nothing here {{2 + "3" + document.getElementById("div1").innerText + "." }}</p>      
    </body>
</html>

我的HTML文件
这消失了
这里没有任何内容{{2+“3”+document.getElementById(“div1”).innerText+“}

我希望看到一个错误或失败,我希望看到“23这消失了”。我看到的是“23”。(注意缺少的“这消失了”)


很明显,小胡子并没有进行直接计算,但实际上是怎么回事?

2被转换成一个字符串,然后与“3”字符串连接起来,因为不能将整数与字符串连接起来

AngularJS表达式是类似JavaScript的代码片段,由AngularJS在当前模型范围的上下文中计算,而不是在全局上下文(窗口)的范围内


对不起,也许我应该说得更清楚些。问题是指document.getElement…innerText。Angular正在进行评估,但绝对不是评估。令人费解的是,它获得了“.”,但未能获得DOM对象。这导致人们相信整个页面正在被克隆,或者有其他一些机制可以正常地失败。2+“3”=23并不奇怪。CSS树将首先重建:
这将消失
,然后$compiler将处理具有空div的DOM。这准确吗?我现在(从中)了解到,
{{code}}
不是JavaScript,而是一种新的解释语言。