What are the differences between following two javascript code?
本问题已经有最佳答案,请猛点这里访问。
在一些使用立即函数的Javascript代码中,它具有参数
1 2 3 | (function (window, document) { ... })(window, document); |
但是,
1 2 3 4 5 6 | (function () { var userAgent = window.navigator.userAgent; ... var el = document.getElementById(...) ... })(); |
上述两个代码之间有什么区别。 哪种方式更好,为什么?
What are the differences between the above two codes. Which is better way and why?
仅在浏览器的所有实用性和用法中,没有明显的区别。
也就是说,引用局部变量而不是全局变量会带来非常轻微的性能提升。
此外,它允许通过模拟版本交换真实
顺便说一句,你可以传递另一种论点,即
1 2 3 | (function(undefined) { // your code }()); |
您实际上并没有将任何内容传递给外部函数,这样做可以确保
我能想到的两个原因:
1)局部变量是范围链中的第一个,因此它们的访问速度比全局变量快(我的意思更快,意味着更快)。
2)在函数内部,
1 2 3 4 | (function (w, d) { //var userAgent = w.navigator.userAgent; )(window, document); |
区别在于多态:在第一种情况下,您可以将任何一对对象传递给函数,该对象的行为与
在实践中,特别是对于这两个对象,任何好处都更容易出错 - 每个人都希望