首先打开EXCEL,点击“工具”。 2、在工具里选择“选项”。 3、打开选项对话框之后就会看到如图所示,点击“重新计算”。 4、勾选“迭代计算”,计算数为100,然后点击确定,这时候就不会再弹出“选循环引用”警告了需要找到“excel选项”,这个地方在Office 2003版本里的“工具”选项里,而在Office 2007版本里不好找,在所以这种强调一下,避免有些朋友找不到。 3 其次,点击“公式”选项,在“计算选项”中,可以看到“启用迭代计算”前面是没有勾选上的,将其勾选上之后,就能解决“循环引用”警告的问题了,表示excel默认可以进行循环引用。 4 最后,在“公式”选项卡上的“公式审核”中,点击“错误检查”,可以看到“循环引用”变成了灰色,处于不可操作状态。 END 方法二:针对公式使用错误 针对公式使用错误导致的“循环引用”警告,这种情况就需要对公式本身进行更改。在“公式”选项卡中,错误检查的下
Js中存在和OC同等意义的闭包(block&closure)闭包可看作匿名函数,例如:
函数中 给element的onclick属性赋值了一个闭包,闭包要访问element的id属性。闭包在js中也是对象,函数即对象。闭包会持有外部传入的变量,因此闭包持有了element对象,而element对象通过onclick属性持有了闭包,因此两个对象相互持有,造成内存泄漏。
与OC类比,OC中使用weak对象引用,来解决循环引用的问题,js中也有类似操作,例如:
因为var id是由赋值得到的,js的赋值操作是值或者引用的拷贝,并不持有对象。此时element持有闭包,闭包持有id对象,并未造成循环引用。
js如下<script>
function showCont()
{
var bt=document.getElementById("Play")
var s=document.getElementById("fla")
var f=document.getElementById("show")
if(s.style.display=="")
{
s.style.display="none"
f.style.display=""
bt.innerText="点击缩进全文"
}
else
{
s.style.display=""
f.style.display="none"
bt.innerText="点击展开全文"
}
}
</script>
【引申】:
1. 名叫 div 的变量有一个对 handler 的引用(因为 handler 是它的一个属性)
2. handler 也同样有一个对 div 的引用(因为 div 处于它的作用域内。这是js闭包的特性,函数内的代码可以引用函数外的变量)
3. 这就造成了循环引用,最后两个变量都不会被销毁,成了内存泄露
按照这个说法,像下面这样写代码就不会出现这种内存泄露了。
因为 div 变量不再处于 handler 函数的作用域之中。