JavaScript函数
函数本身就是对象。总的来说,函数在JavaScript中可以,
- 被赋值一个变量
- 被赋值为对象的属性
- 作为参数被传入别的函数
- 作为函数的结果被返回
- 用字面量来创建
1 函数对象
常规是通过字面量来创建函数:
function add(x,y){return x+y;}
or
var add = function(x,y){return x+y;}
关键字function会调用Function来new一个对象,并将参数表和函数体传递给Function的构造函数。
2 函数作用域
JavaScript中变量的作用域为函数体内有效,而无块作用域。
function func(){ for(var i=0;i<array.length;i++ ){ //do something } //此时i任然有效,i=array.length print(i); //array.length }
词法作用域
JavaScript作用域是词法作用域,其作用于是在定义时(词法分析时)就确定下来,而并不是在执行是确定。
var str="global";
function scopeTest(){
print(str);
var str="local";
print(str);
}
scopeTest();
运行结果却是:
undefined
local
因为在函数scopeTest的定义中,预先访问了未声明的变量str,然后才对他初始化,所以第一个print(str)为undefined错误。