S
Published on
· Last modified on
· Public

Javascript变量作用域与预编译

1、预编译:
大家都知道javascript是有预编译的,但是写法不同预编译效果也不同,例如:
1.1
alert(methodA);
function methodA(){}
打印结果是function(){}:表明methodA被预编译了并且初始化了。
1.2
alert(methodA);
var methodA = function(){}
打印结果是undefined:表明methodA只是分配内存空间并没有被初始化。这里要引出第变量作用域。
2、变量作用域
javascript是一种弱类型语言,跟C、C++、Java完全不一样。例如:
var a1 = ”1′;
function mehtodB()
{
alert(a1);
var a1 = ’2′;
}
methodB();
强类型语言结果: 1
JS运行结果: undefind
为什么?解释如下:
局部变量的作用域是局部的,在局部变量里面声明的变量在函数开始第一行就起作用了,所以并不受全局作用域的干涉。但是function并不是这样道理 请看1.

Z
Published on

楼主可以把代码格式化一下啊,看起来会更舒服。

U
Published on

这代码真是。。。。。

楼主解释得有问题啊。说的基本是变量声明提升呀。

F
Published on
uoryon:

这代码真是。。。。。

楼主解释得有问题啊。说的基本是变量声明提升呀。

是变量声明提前了把,关于第一个例子中的函数表达式并不会提前,在javascript权威指南上有

F
Published on
funky:
uoryon:

这代码真是。。。。。

楼主解释得有问题啊。说的基本是变量声明提升呀。

是变量声明提前了把,关于第一个例子中的函数表达式并不会提前,在javascript权威指南上有

突然发现时间戳有问题,现在是9月2日凌晨0:30把

Sign in or Sign up Leave Comment