//函数作用域
//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);
//想要处理一些对象,但是又不确定以何种形式来处理,则完全可以将“处理方
//式”作为一个抽象的粒度来进行包装(即函数)。
分享到:
相关推荐
javascript学习笔记发放2。这章我们 继续.然后了解下js中操作数据 和 函数的 作用域。
在之前的介绍中,我们已经知道 Javascript 没有块级作用,只有函数级作用域。 代码如下: function test() { // a scope for(var i = 0; i < 10; i++) { // not a scope // count } console.log(i); // ...
在C和Java中,都有一个程序的入口函数或方法,即main函数或main方法。而在JavaScript中,程序是从JS源文件的头部...具体来说,在执行流程进入函数时会建立一个新的作用域,在函数执行完成退出时会销毁这个作用域。函
函数 foo 将会在整个程序执行前被 hoist (提升),因此它在定义 foo 函数的整个 scope (作用域)中都是可用的。即使在函数定义之前调用它也没问题。 foo(); // Works because foo was created before this code runs ...
因为 Javascript 没有块级作用域,只有函数作用域,所以闭包的使用与函数是紧密相关的。 模拟私有变量 代码如下: function Counter(start) { var count = start; return { increment: function() { count++...
本文主要讲述了javascript中作用域和命名空间的区别,十分的详细,这里推荐给大家,希望小伙伴能有所收获
//声明,并且赋值,即定义了 下面是几点总结: 变量的作用域:全局的和局部的。(注意:如果尝试读取一个未声明的变量的值,javascript会生成一个错误) 第一点:在都使用var关键字修饰变量的情况下,如果给一个局部...
每一个 Javascript 函数都能在自己作用域内访问一个特殊的变量 – arguments。这个变量含有一个传递给函数的所有参数的列表。 arguments 对象不是一个数组。尽管在语法上它跟数组有相同的地方,例如它拥有 length ...
基础篇 Javascript学习笔记1 数据类型 Javascript学习笔记2 函数 Javascript学习笔记3 作用域 Javascript学习笔记4 Eval函数 Javascript学习笔记5 类和对象 Javascript学习笔记6 prototype的提出 Javascript学习...
(该变量的作用域是局部的)。 您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。 函数的调用方式 1、普通调用:functionName(实际参数…) 2、通过指向函数的变量去调用:...
** javascript从入门到跑路—–小文的js学习笔记(1)———script、alert、document。write() 和 console.log 标签 … … javascript从入门到跑路—–... 函数作用域: 只在某个函数里面有效,不管是var或者let都可
全局作用域下 this; 当在全局作用域中使用 this,它指向全局对象。 这里详细介绍下全局对象: 全局对象(Global object) 是在进入任何执行上下文之前就已经创建了的对象; 这个对象只存在一份,它的属性在程序中任何...
一.关于Javascript变量声明 在Javascript中,声明一个变量 var a=1; 也可以直接 a=1; 这两种表达是有区别的, 一个是当前作用域的局部变量,另一个则是当前作用域的全局变量;... // error 二.Javascript变量作用域
主要介绍了JS页面获取 session 值,作用域和闭包,结合具体实例形式分析了javascript与jsp交互获取session值、函数作用域及闭包相关操作技巧,需要的朋友可以参考下
一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 代码如下: var n=999;...
面向对象的 javascript 学习 大家好,根据我的学习...引用,函数重载和类型检查,作用域,图解prototype和constructor, 闭包,上下文,公共方法和私有方法,公共变量私有变量,特权方法,静态方法,命名空间,编码建议
高级函数 1.1 作用域安全的构造函数 ①直接调用构造函数而不适用new操作符时,由于this对象的晚绑定,它将映射在全局对象window上,导致对象属性错误增加到window。 代码如下: function Person(name,age,job){ this....
js函数基础部分:javascript学习笔记(四)function函数部分 创建函数的语法 命名函数表达式 代码如下: //命名函数表达式 var add = function add(a,b){ return a+b; }; 函数表达式 代码如下: //又名匿名函数 ...
6、执行环境和作用域 (1)执行环境(execution context):所有的JavaScript代码都运行在一个执行环境中,当控制权转移至JavaScript的可执行代码时,就进入了一个执行环境。活动的执行环境从逻辑上形成了一个栈,...
谷粒学院学习笔记,内容包括 原型与原型链、执行上下文、执行上下文栈、变量提升、函数提升、作用域、作用域链、闭包、对象的多种创建模式、对象的继承模式、JavaScript事件循环机制等。