javascript 变量作用域

来源:http://www.sh-fengwen.com 作者:瘦身美容 人气:70 发布时间:2019-09-04
摘要:相信大家都知道,javascript中变量作用域只有两种,全局作用域与函数中的局部作用域(有人认为不同script节点间也存在一种作用域,称之为段作用域,理由是在后面的script的节点中定义

相信大家都知道,javascript中变量作用域只有两种,全局作用域与函数中的局部作用域(有人认为不同script节点间也存在一种作用域,称之为段作用域,理由是在后面的script的节点中定义的变量,在这个script节点没有被解析之前,前面的script节点是不能访问这个变量的,这种依赖于代码解析顺序的特殊情况,不在我们这篇文章的讨论之列)。

美高梅游戏平台网站,http://www.cnblogs.com/wangfupeng1988/p/3977924.html

电子游戏美高梅网址,比如下面的代码:

javascript  原型、作用域链,讲解的很好,能学会学懂

var a = 1;
function f(b){
    var c = 2;
}

a就是我们声明的全局变量,c就是我们声明的局部变量,b作为函数f的形参,也是一个局部变量。

1.1 函数作用域

我们再看下面的代码:

没有块作用域:即作用域不是以{}包围的,其作用域完成由函数来决定,因而if /for等语句中的花括号不是独立的作用域。

function outer(){
    var o;
    function inner(){
        var i;
    }
}

如前述,JS的在函数中定义的局部变量只对这个函数内部可见,称之谓函数作用域。

可以看到o和i都是局部变量,只不过o的作用域范围为函数outer的函数体,而i的作用域范围为inner的函数体。

嵌套作用域变量搜索规则:当在函数中引用一个变量时,JS会搜索当前函数作用域,如果没有找到则搜索其上层作用域,一直到全局作用域。

我们再看一段代码:

函数内无论什么位置定义的局部变量,在进入函数时都是已经定义的,但未初始化,即为undefined,直到运行到变量被赋值时才被初始化,因此若访问了未初始化的变量,我们会得到undefined的说明。

var g = 1;  function outer(){       var o = 1;       function inner(){            var i = 1;            debugger;       }       inner();  }  outer();

b)js里面只有函数作用域,以及全局作用域,

debugger?没错,就是debugger。呵呵,我们单独运行这段代码,打开浏览器的调试环境,比如ff浏览器的firebug

3 对象

美高梅游戏平台网站 1

在基于类型的语言中,对象是由类实例化,而JS是基于原型的系统,对象是由原型复制生成的。

我们选择脚本这一项,然后查看debugger运行时的调用堆栈情况,可以看到,除了有inner,outer以外,还有一个scope1.html()这么一个函数,这个函数从何而来的?

JS中有两个特殊的对象:Object与Function,它们都是构造函数,用于生成对象。注意此处的Function 函数是大写的,函数对象

我们再看如下代码:

判断一个变量是不是对象非常简单。值类型的类型判断用typeof,引用类型的类型判断用instanceof。

debugger;

一切(引用类型)都是对象,对象是属性的集合

美高梅游戏平台网站 2

functionFn() {this.name = '王福朋';this.year = 1988;

本文由美高梅游戏平台网站发布于瘦身美容,转载请注明出处:javascript 变量作用域

关键词:

上一篇:JS module LazyLoad之一

下一篇:没有了

最火资讯