Questions tagged «scope»

范围是将值和表达式相关联的封闭上下文。对于涉及不同类型范围的问题以及范围可能不清楚的问题,请使用此标签。

3
角度$ scope。$ apply与$ timeout作为安全的$ apply
我试图更好地理解在Angular中使用$ timeout服务作为一种“安全$ apply”方法的细微差别。基本上是在某些代码可以响应Angular事件或非Angular事件(例如jQuery或某些标准DOM事件)的情况下。 据我了解: 在$ scope。$ apply中包装代码适用于您尚未处于摘要循环(又称为jQuery事件)的情况,但是如果正在进行摘要,则会引发错误 在$ timeout()调用中包装没有延迟参数的代码无论是否已经在摘要周期中都有效 查看Angular源代码,看起来$ timeout调用了$ rootScope。$ apply()。 如果摘要周期已经在进行中,为什么$ timeout()也不会引发错误? 当您确定摘要尚未进行时,使用$ scope。$ apply()是最佳方法吗?在需要使用任一方法确保其安全性时,是使用$ timeout()吗? 是$ timeout()确实是可以接受的“安全应用”,还是有陷阱? 感谢您的任何见解。
68 angularjs  scope 

1
为什么要声明一个与父作用域中的变量同名的子变量?
我最近写了一些代码,在其中我无意中将变量名重用为函数中声明的操作的参数,该函数已经具有相同名称的变量。例如: var x = 1; Action<int> myAction = (x) => { Console.WriteLine(x); }; 当我发现重复项时,我很惊讶地看到代码可以完美地编译和运行,这并不是基于我对C#范围的了解而期望的行为。一些快速的Google搜索出现SO问题,它们抱怨类似的代码确实会产生错误,例如Lambda Scope Clarification。(我将示例代码粘贴到IDE中,以确保它可以运行;只是为了确保它可以正常运行。)此外,当我在Visual Studio中进入“重命名”对话框时,第一个x突出显示为名称冲突。 为什么此代码有效?我在Visual Studio 2019中使用C#8。

1
带有块作用域的Javascript默认参数仅在iOS上失败
try { const val = 'correct value'; (() => { ((arg = val) => { const val = 'ignored value'; alert(arg); })(); })(); } catch (err) { alert(err.message || 'Unknown error'); } 运行代码段隐藏结果展开摘要 在OS X Chrome,OS X Safari,Android Chrome,Windows Chrome,Windows Firefox 甚至 Windows Edge上,它会警告“正确值”。在iOS Safari和iOS Chrome上,它会提示“找不到变量:val”。 以下代码段均适用于iOS: 不使用默认参数(代码段2): try { …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.