Javascript 未定义的ng绑定是否比ng绑定和ng show更昂贵?

Javascript 未定义的ng绑定是否比ng绑定和ng show更昂贵?,javascript,angularjs,Javascript,Angularjs,假设toShowVarus未定义,哪个更昂贵 <span ng-bind="toShowVar" ng-show="toShowVar"></span> 或 如果变量未定义,后者显然不会在屏幕上打印任何内容。似乎更昂贵。因为toShowVar将绑定到span,即使其中没有任何内容。如果我们使用ng if=“toShowVar”,成本将很小,由于角度元素不包括DOM中的span元素,所以按降序给予它们 似乎更昂贵。因为toShowVar将绑定到span,即使其

假设toShowVar
us未定义,哪个更昂贵

<span ng-bind="toShowVar" ng-show="toShowVar"></span>


如果变量未定义,后者显然不会在屏幕上打印任何内容。

似乎更昂贵。因为
toShowVar
将绑定到
span
,即使其中没有任何内容。如果我们使用
ng if=“toShowVar”
,成本将很小,由于角度元素不包括DOM中的
span
元素,所以按降序给予它们

似乎更昂贵。因为
toShowVar
将绑定到
span
,即使其中没有任何内容。如果我们使用
ng if=“toShowVar”
,这将有点昂贵,因为角度元素不包括DOM中的
span
元素。因此按降序给予它们

如果使用
ng bind=“toShowVar”
ng show=“toShowVar”
将无效,因为如果
toShowVar
未定义,则使用
ng bind
足以使
span
呈现空内容

因此,由于在
ng show=“toShowVar”
中进行了第二次无用的测试,使用这两种方法的成本将更高,因为它将再次检查
toShowVar
的值,然后尝试将类
.ng hide
添加到元素中

但是不同之处在于,仅使用
ng bind
时,span将在页面中呈现空内容,使用
ng show
将呈现span,但使用
dispaly:none
from
.ng hide
类。

如果使用
ng bind=“toShowVar”
则使用
ng show=“toShowVar”
将是无用的,因为如果
toShowVar
未定义,则使用
ng bind
足以使
span
呈现空内容

因此,由于在
ng show=“toShowVar”
中进行了第二次无用的测试,使用这两种方法的成本将更高,因为它将再次检查
toShowVar
的值,然后尝试将类
.ng hide
添加到元素中


但是不同之处在于,仅使用
ng bind
将在页面中呈现空白内容的范围,而使用
ng show
将呈现空白内容,但使用
dispaly:none
.ng hide
类来解释这一点,首先,
ng show
ng bind
都以相同的
优先级运行。没有任何东西支持
ng show
来提高性能

在这里隐藏内容
ng show
完全不是必需的。ng show还将开始观看相同的节目(此处为
toShowVar
),并将在其注册的观看者上执行(通过添加ng hide类将display属性更改为none)。 为了进一步解释,如果使用
ng show='false'
并在进一步的操作中将
toShowVar
更改为某些文本,并通过调试器工具访问
DOM
,则可以检查更新的文本是否仍然可用。因此,很明显,ng show不会在这里增加任何性能优势。 如果您使用
ng If
(以高于两者的优先级运行),它将从
DOM
中删除元素,并且后续的观察程序在重新呈现到DOM之前不会处于活动状态,因此即使在
ng If
的情况下,您也会运行一些额外的内容,因此,它不会像
ngbind
那样快,而是比
ngbind
ngshow
thgother快


注意:只有
ng bind
ng bind ng show
可以在UI中有所不同,如果跨度对UI中可见的CSS(可能是内联、层次结构父级或任何)有一定影响,即使它是空的(类似于边框),否则,外观和感觉都是相同的

为了解释这一点,首先,
ng show
ng bind
以相同的
优先级运行。没有任何东西支持
ng show
来提高性能

在这里隐藏内容
ng show
完全不是必需的。ng show还将开始观看相同的节目(此处为
toShowVar
),并将在其注册的观看者上执行(通过添加ng hide类将display属性更改为none)。 为了进一步解释,如果使用
ng show='false'
并在进一步的操作中将
toShowVar
更改为某些文本,并通过调试器工具访问
DOM
,则可以检查更新的文本是否仍然可用。因此,很明显,ng show不会在这里增加任何性能优势。 如果您使用
ng If
(以高于两者的优先级运行),它将从
DOM
中删除元素,并且后续的观察程序在重新呈现到DOM之前不会处于活动状态,因此即使在
ng If
的情况下,您也会运行一些额外的内容,因此,它不会像
ngbind
那样快,而是比
ngbind
ngshow
thgother快


注意:只有
ng bind
ng bind ng show
可以在UI中有所不同,如果跨度对UI中可见的CSS(可能是内联、层次结构父级或任何)有一定影响,即使它是空的(类似于边框),否则,外观和感觉都是相同的

'如果您使用ng bind=“toShowVar”则ng show=“toShowVar”将毫无用处,因为如果toShowVar未定义,则使用ng bind足以隐藏span。'我认为这是不对的。
span
元素将存在,而与ng bind变量的值无关。@Mr.niks是的,您是对的,我只是没有正确地解释它,我重新格式化了它:因为如果toShowVar没有定义,使用ng bind就足以呈现一个包含空内容的span,如果使用ng bind=“toShowVar”则显示ng
<span ng-bind="toShowVar"></span>