Javascript 为什么隔离作用域(=)不使用字符串?

Javascript 为什么隔离作用域(=)不使用字符串?,javascript,angularjs,Javascript,Angularjs,我是个新手。我读了很多关于指令隔离作用域的@/=之间的区别的博客,但我仍然感到困惑。 这是我尝试过的一个小例子 指示试验 var-app=angular.module'myApp',[]; app.controller'MyCtrl',['$scope',函数$scope{ }]; 应用程序指令“personInfo”,[函数{ 返回{ 限制:“EA”, 范围:{ 名称:'=', 年龄:'=' }, 模板:我的名字是{{name}。我的年龄是{{age}, 链接:功能范围、IELENT、iAt

我是个新手。我读了很多关于指令隔离作用域的@/=之间的区别的博客,但我仍然感到困惑。 这是我尝试过的一个小例子

指示试验 var-app=angular.module'myApp',[]; app.controller'MyCtrl',['$scope',函数$scope{ }]; 应用程序指令“personInfo”,[函数{ 返回{ 限制:“EA”, 范围:{ 名称:'=', 年龄:'=' }, 模板:我的名字是{{name}。我的年龄是{{age}, 链接:功能范围、IELENT、iAttrs{ console.logscope.name; } }; }] =是一个双向绑定,因此当您使用字符串时,它会认为您试图传递一个名为deepak的范围变量。要传入字符串,必须将它们括在引号name='deepak'中

数字起作用的原因是变量不能以数字开头,所以它们被解释为一个值

如果使用@,它将是一个单向绑定,不能传递范围变量。这只允许您传递值,因此name=deepak和name={{somevar}}将起作用。

The=是双向绑定,因此当您使用字符串时,它会认为您试图传递名为deepak的范围变量。要传入字符串,必须将它们括在引号name='deepak'中

数字起作用的原因是变量不能以数字开头,所以它们被解释为一个值

如果使用@,它将是一个单向绑定,不能传递范围变量。这将只允许您传递值,以便name=deepak和name={{somevar}}可以工作。

如果使用=,则指令在后面的表达式上需要一个范围变量

因此,通过告诉angular查找$scope.deepak,它在本例中等于null,从而得到结果

我想如果你用数字来命名变量是可行的,因为你不能用纯数字来命名变量,所以它会做一些聪明的猜测来替换你的值

要在使用=时使用文字字符串,需要添加额外的引号层

如果使用=,则指令在后面的表达式上需要一个范围变量

因此,通过告诉angular查找$scope.deepak,它在本例中等于null,从而得到结果

我想如果你用数字来命名变量是可行的,因为你不能用纯数字来命名变量,所以它会做一些聪明的猜测来替换你的值

要在使用=时使用文字字符串,需要添加额外的引号层