`

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);
//想要处理一些对象,但是又不确定以何种形式来处理,则完全可以将“处理方
//式”作为一个抽象的粒度来进行包装(即函数)。

 

 

分享到:
评论
1 楼 sblig 2012-04-16  
//作为函数的返回值
function currying(){
return function(){
print("curring");
}
}
//调用 currying 返回的这个匿名函数,需要这样
currying()();


相关推荐

    javascript学习笔记发放2

    javascript学习笔记发放2。这章我们 继续.然后了解下js中操作数据 和 函数的 作用域。

    Javascript学习笔记之函数篇(六) : 作用域与命名空间

    在之前的介绍中,我们已经知道 Javascript 没有块级作用,只有函数级作用域。 代码如下: function test() { // a scope  for(var i = 0; i < 10; i++) { // not a scope  // count  }  console.log(i); // ...

    JavaScript学习笔记(三):JavaScript也有入口Main函数

    在C和Java中,都有一个程序的入口函数或方法,即main函数或main方法。而在JavaScript中,程序是从JS源文件的头部...具体来说,在执行流程进入函数时会建立一个新的作用域,在函数执行完成退出时会销毁这个作用域。函

    Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式

    函数 foo 将会在整个程序执行前被 hoist (提升),因此它在定义 foo 函数的整个 scope (作用域)中都是可用的。即使在函数定义之前调用它也没问题。 foo(); // Works because foo was created before this code runs ...

    Javascript学习笔记之 函数篇(三) : 闭包和引用

    因为 Javascript 没有块级作用域,只有函数作用域,所以闭包的使用与函数是紧密相关的。 模拟私有变量 代码如下: function Counter(start) {  var count = start;  return {  increment: function() {  count++...

    Javascript学习笔记之函数篇(六) : 作用域与命名空间

    本文主要讲述了javascript中作用域和命名空间的区别,十分的详细,这里推荐给大家,希望小伙伴能有所收获

    javascript权威指南 学习笔记之变量作用域分享

    //声明,并且赋值,即定义了 下面是几点总结: 变量的作用域:全局的和局部的。(注意:如果尝试读取一个未声明的变量的值,javascript会生成一个错误) 第一点:在都使用var关键字修饰变量的情况下,如果给一个局部...

    Javascript学习笔记之函数篇(四):arguments 对象

    每一个 Javascript 函数都能在自己作用域内访问一个特殊的变量 – arguments。这个变量含有一个传递给函数的所有参数的列表。 arguments 对象不是一个数组。尽管在语法上它跟数组有相同的地方,例如它拥有 length ...

    Javascript 读书笔记索引贴

    基础篇 Javascript学习笔记1 数据类型 Javascript学习笔记2 函数 Javascript学习笔记3 作用域 Javascript学习笔记4 Eval函数 Javascript学习笔记5 类和对象 Javascript学习笔记6 prototype的提出 Javascript学习...

    javascript学习笔记(四)function函数部分

    (该变量的作用域是局部的)。 您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。 函数的调用方式 1、普通调用:functionName(实际参数…) 2、通过指向函数的变量去调用:...

    javascript从入门到跑路—–小文的js学习笔记(7)——–js函数

    ** javascript从入门到跑路—–小文的js学习笔记(1)———script、alert、document。write() 和 console.log 标签 … … javascript从入门到跑路—–... 函数作用域: 只在某个函数里面有效,不管是var或者let都可

    Javascript学习笔记之 函数篇(二) : this 的工作机制

    全局作用域下 this; 当在全局作用域中使用 this,它指向全局对象。 这里详细介绍下全局对象: 全局对象(Global object) 是在进入任何执行上下文之前就已经创建了的对象; 这个对象只存在一份,它的属性在程序中任何...

    Javascript学习笔记二 之 变量

    一.关于Javascript变量声明 在Javascript中,声明一个变量 var a=1; 也可以直接 a=1; 这两种表达是有区别的, 一个是当前作用域的局部变量,另一个则是当前作用域的全局变量;... // error 二.Javascript变量作用域

    JS页面获取 session 值,作用域和闭包学习笔记

    主要介绍了JS页面获取 session 值,作用域和闭包,结合具体实例形式分析了javascript与jsp交互获取session值、函数作用域及闭包相关操作技巧,需要的朋友可以参考下

    javascript学习笔记(十三) js闭包介绍(转)

    一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 代码如下: var n=999;...

    面向对象javascript笔记

    面向对象的 javascript 学习 大家好,根据我的学习...引用,函数重载和类型检查,作用域,图解prototype和constructor, 闭包,上下文,公共方法和私有方法,公共变量私有变量,特权方法,静态方法,命名空间,编码建议

    JavaScript高级程序设计 学习笔记 js高级技巧

    高级函数 1.1 作用域安全的构造函数 ①直接调用构造函数而不适用new操作符时,由于this对象的晚绑定,它将映射在全局对象window上,导致对象属性错误增加到window。 代码如下: function Person(name,age,job){ this....

    JavaScript函数模式详解

    js函数基础部分:javascript学习笔记(四)function函数部分 创建函数的语法 命名函数表达式 代码如下: //命名函数表达式 var add = function add(a,b){  return a+b; }; 函数表达式 代码如下: //又名匿名函数 ...

    JavaScript高级程序设计(第3版)学习笔记8 js函数(中)

    6、执行环境和作用域 (1)执行环境(execution context):所有的JavaScript代码都运行在一个执行环境中,当控制权转移至JavaScript的可执行代码时,就进入了一个执行环境。活动的执行环境从逻辑上形成了一个栈,...

    JavaScript高级整理

    谷粒学院学习笔记,内容包括 原型与原型链、执行上下文、执行上下文栈、变量提升、函数提升、作用域、作用域链、闭包、对象的多种创建模式、对象的继承模式、JavaScript事件循环机制等。

Global site tag (gtag.js) - Google Analytics