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也是这个原理。
回复 更多评论