1. 全局變量覆蓋
var a=100;
var b=true;
function test()
{
alert(a); // undeined
alert(b); // true
var a = 9;
}
上面這段腳本,輸出結果是undeined 和 true 。
當函數域中,有變量聲明或者定義。 如果這個變量和全局變量同名,則會覆蓋全局變量。
把聲明和賦值分開看,然后把聲明放在前面去。這是等效的:
var a
alert(a); // undeined
alert(b); // true
a = 9;
2. 想修改iframe其內的頁面
同一個域名下可以,不同域名下還是不可以的。
空口說話不是我的風格,還是看下范例代碼:
html:
<script type="text/javascript" src="lib/jquery/jquery-1.3.2.min.js"></script>
</head>
<body>
<iframe id="test1" name="test1" width=100 height=60 src="about.html"></iframe>
<iframe id="test2" name="test2" width=100 height=60 src="
http://www.126.com"></iframe>
<input type="button" value="test1" onclick="alert(test1.document.body.innerHTML)">
<input type="button" value="test2" onclick="alert(test2.document.body.innerHTML)">
</body>
3. 可以利用ajax 來讀取文件
簡單范例(不要追究其丑陋):
var xmlHTTP;
try
{
xmlHTTP = new ActiveXObject( "Microsoft.XMLHTTP") || false;
if( false === xmlHTTP)
{
xmlHTTP = new ActiveXObject('Msxml2.XMLHTTP') || false;
}
}catch(e)
{
xmlHTTP = new XMLHttpRequest();
}
xmlHTTP.open( "POST", "a.html",false);
xmlHTTP.send();
var strResult = xmlHTTP.responseText;
4. 閉包在書本上有些晦澀
用自己的話總結下吧。
特點:返回匿名函數
特性:由于返回匿名函數,所以父函數無法由垃圾回收機制回收。
技巧:可以在聲明時初始化參數,使得運行環境保留著聲明時的情況。
舉例:
var a = function(_i)
{
return function()
{
alert(_i);
}
};
a(10)();
// 也可以 如下
var a = function(_i)
{
return function()
{
alert(_i);
}
}(i);
在聲明的時候就動態指定了運行中的參數。
var b = function()
{
return function(_i)
{
alert(_i);
}
};
b()(10);
5. 跨域的問題 利用dom 動態改變script 的src 就能實現這個效果。 jquery中的動態加載js也是這個原理。
回復 更多評論