首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JavaScript 学习札记 五 函数作用域

2012-07-26 
JavaScript 学习笔记 五 函数作用域?//函数作用域//JavaScript 的作用域为词法作用域,所谓词法作//用域是

JavaScript 学习笔记 五 函数作用域

?

//函数作用域//JavaScript 的作用域为词法作用域,所谓词法作//用域是说,其作用域为在定义时(词法分析时)就确定下来的,而并非在执行时确定//作用域链是关于作用域的链,通常实现为一个链表,链表的每个项都是一个对象,在全局作用域中,该链//中有且只有一个对象,即全局对象。对应的,在一个函数中,作用域链上会有两个对象,第//一个(首先被访问到的)为调用对象,第二个为全局对象。//JavaScript 中,函数也是一种对象,并非其他任何对象的一部分//函数本身是独立的。可以通过Function 对象上的 call 或者 apply 函数来修改函数的上下var str = "global";function scopeTest(){    alert(str);// 由于在局部作用域是能找到str的定义,而此处使用是在局部定义之前,所以打印的是  undefined    var str = "local";    alert(str);    alert(window.str);// 利用全局对象,来引用全局变量}scopeTest();function scopeTest2(){    alert(str);//由于在局部作用域上未能找到定义,而此处是继续在链接上查询,最终找到的是全局变量}scopeTest2();
function adPrint2(str, handler){print(handler(str));}//将字符串转换为大写形式,并返回function up(str){return str.toUpperCase();}//将字符串转换为小写形式,并返回function low(str){return str.toLowerCase();}adPrint2("Hello, world", up);adPrint2("Hello, world", low);//想要处理一些对象,但是又不确定以何种形式来处理,则完全可以将“处理方//式”作为一个抽象的粒度来进行包装(即函数)。

?

?

//作为函数的返回值function currying(){return function(){print("curring");}}//调用 currying 返回的这个匿名函数,需要这样currying()();

热点排行