function outputNumbers(count) {
(function () {
for (var i =0;i < count; i++) {
alert(i);
}
})();alsert(i); //导致一个错误!
}
块作用域经常,这种技术在全局作用中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。一般来说,我们都应该尽量少向全局作用域中添加变量和函数。在一个由很多人员共同参与的大型应用程序中,过多的全局变量和函数很容易导致命名冲突。而通过创建私有作用域,每个开发人员即可以使用自己的变量,又不必担心搞乱全局作用域。
JavaScript是单线程语言,但它允许通过设置超时值和间歇时间值来调度代码在特定的时刻执行。
前者是在指定的时间过后执行代码,而后者则是每隔指定的时间就执行一次代码。
var timeoutId = setTimeOut(function, ms);
clearTimeOut(timeoutId);
var intervalId = setInterval(function, ms);
clearInterval(intervalId);
在开发环境中,很少使用真正的间歇调用,原因是后一个间歇调用可能会在前一个间歇调用结束之前启动。
动态加载脚本
动态加载js
function loadScript(url) {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
document.body.appendChild(script);
}
function loadScriptString(code) {
var script = document.createElement("script");
script.type = "text/javascript";
try {
script.appendChild(document.createTextNode(code));
}
catch (ex) {
script.text = code;
}document.body.appendChild(script);
}
动态加载css
function loadStyles(url) {
var link = document.createElement("link");
link.rel = "stylesheet";
link.type = "text/css";
link.href = url;
var head = document.getElementsByTagName("head")[0];
head.appendChild(link);
}
function loadStyleString(css) {
var style = document.createElement("style");
style.type = "text/css";
try {
style.appendChild(document.createTextNode(css));
}catch (ex) {
style.stylesheet.cssText = css;
}var head = document.getElementsByTagName("head")[0];
head.appendChild(style);
}