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
分享到:
相关推荐
讨论javascript作用域,很多人被javascript作用域搞迷糊了,这个应该有用。
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。 ...
深化理解javascript作用域其次篇之词法作用域和动态作用域_.docx
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。任何程序...
01JavaScript作用域.md
深入理解JavaScript作用域
JavaScript 作用域 和作用域链作用域作用域链 作用域 作用域就是变量与函数的可访问范围,作用域控制着变量与函数的可见性和生命周期。换句话说,作用域决定了代码区块中变量和其他资源的可见性。 function fun() { ...
本文是深入理解javascript作用域系列第二篇——词法作用域和动态作用域 词法作用域 第一篇介绍过,编译器的第一个工作阶段叫作分词,就是把由字符组成的字符串分解成词法单元。这个概念是理解词法作用域的基础 ...
js作用域基本介绍.doc
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域示例详解的介绍,希望能帮助大家更好的学习JavaScript。 任何程序设计...
JavaScript作用域示例详解_.docx
javascript中没有块级作用域,取而代之的javascript使用的是函数作用域,下面使用示例学习一下js作用域的使用方法
深入理解JavaScript作用域共12页.pdf.zip
对javascript执行环境,作用域的深层次理解,
javascript作用域链(Scope Chain)初探.docx
本文主要给大家分享了关于javascript作用域面试题的相关内容,分享出来供大家参考学习,下面来一起看看吧。 一、作用域: 在了解作用域之前,首先需要明白一些基础概念: 每一个变量、函数都有其作用的范围,超出...