JavaScript 闭包分享(一):传递参数
-
Upload
janlay-wu -
Category
Technology
-
view
4.330 -
download
9
description
Transcript of JavaScript 闭包分享(一):传递参数
JavaScript 闭包分享 (一 )闭包传递参数
闭包的结构
常见结构:独立语句(function() {
// your code...})();
常见结构:表达式(缓存示例)
var get = function() {
var cache = {};
return function(selector) {
if(cache.hasOwnProperty(selector)) return selector.cache;
return cache.selector = D.query(selector);
};
}();
闭包的优点天然的安全性
◦var => private逻辑相对独立函数式编程的优势
◦延迟计算◦概念简单易懂◦变化多端
闭包的参数传递
回顾:(function() {
// your code...})();
(function($) {$(function() {
// code on DOMReady…});
})(jQuery);
传递常见引用:示例(function(w, d) {
// w.setTimeout(…// d.getElementById(…
})(window, document);
(function(win, doc) {// win.setTimeout(…// doc.getElementById(…
})(window, document);
传递常见引用:优点特定范围内的作用域快捷引用减少压缩后字节数更好的代码混淆
传递常见引用:缺点长时间持有对window的引用,导致特定场景下的跨域冲突
传递“无引用”:示例(function(undefined) {
// if(typeof window.Tracker === undefined) {
// …})();
传递“无引用”:优点安全地使用 undefined快捷引用减少压缩后字节数更好的代码混淆
传递“无引用”:缺点暂时没有,推荐使用
比较:测试变量 /对象是否可用if(myVar)if(window.myVar)if(!!myVar)if(typeof myVar !== ‘undefined’)if(typeof myVar !== undefined)if(myObj.myVar)if(myObj.hasOwnProperty(‘myVar’)if(typeof myObj.myVar !== undefined)
THNAKS
Q & A