`
muyu
  • 浏览: 218573 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js的作用域

阅读更多

PHP的函数里,不能直接访问函数外面的变量,除非显式地声明该变量为global。JavaScript可以直接访问:

var str = 'tom'; 
(function(){
   str = 'jack';
 })();
alert(str);  //打印出jack

 

但是,如果在函数里重新声明变量str,结果就不同了:

var str = 'tom'; 
(function(){
   var str = 'jack';
 })();
alert(str);  //打印出tom

 

 如果在函数里定义一个变量,它在外面能被访问吗?

(function(){
   var str = 'jack';
 })();
alert(typeof str);  //打印出 'undefined'

 

---------

结论

---------

在函数里,可以访问函数体外面的变量;

从函数外面,则不能访问函数体里定义的变量;

 

在google Ajax APIs Playground关于《Anonymous Function for Clean Namespace》的示例代码中,开头的注释如下:

/*
 * Javascript uses functional scope
 * A variable defined in a function is not available outside
 * Very useful for keeping global namespace clean
 * Hide your code in an anonymous function!
 * Then 3rd party Javascripts don't collide!
 * To export any methods to the global, assign them to the window obj (that is the global context)
*/

 

---------

意思

---------

JavaScript的函数作用域;

在函数内定义的变量不能在外面访问;

在保持全局命名空间整洁性方面非常有作用;

把你的代码放在匿名函数里!

那么,就不会和第三方的JavaScript冲突!

。。。

 

 

---------

示例

--------- 

 

/*
 * Javascript uses functional scope
 * A variable defined in a function is not available outside
 * Very useful for keeping global namespace clean
 * Hide your code in an anonymous function!
 * Then 3rd party Javascripts don't collide!
 * To export any methods to the global, assign them to the window obj (that is the global context)
*/

var contentDiv = document.getElementById('content');
(function() {
  var a = 'Invisible outside of anonymous function';
  function invisibleOutside() {
  }

  function visibleOutside() {
  }
  window.visibleOutside = visibleOutside;

  var html = '--INSIDE Anonymous--';
  html += '<br/> typeof invisibleOutside: ' + typeof invisibleOutside;
  html += '<br/> typeof visibleOutside: ' + typeof visibleOutside;
  contentDiv.innerHTML = html + '<br/><br/>';
})();

var html = '--OUTSIDE Anonymous--';
html += '<br/> typeof invisibleOutside: ' + typeof invisibleOutside;
html += '<br/> typeof visibleOutside: ' + typeof visibleOutside;
contentDiv.innerHTML += html + '<br/>';

 

运行结果 写道
--INSIDE Anonymous--
typeof invisibleOutside: function
typeof visibleOutside: function

--OUTSIDE Anonymous--
typeof invisibleOutside: undefined
typeof visibleOutside: function

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics