javascript作用域,js的作用域和作用域链

javascript中执行环境和作用域是一个东西吗

不是一个东西,一般来说,js执行环境就是浏览器。作用域应该说的是js变量、对象、函数的作用域,主要是变量的生存周期,就是说再执行哪些代码之后,这个变量就没有用了。

鄂托克前网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

如何理解 JavaScript 中作为参数的函数的作用域和 this

作用域于参数类型无关,也就是说不管参数是函数还是其他类型,这个参数的作用域只在接收这个参数的函数内有效,如下:

function test(callback){

if(typeof callback == "function"){

callback();

}

//此时这个参数的作用域只在test这个函数内有效,其他地方都是无效的。

}

this是一个指针类型,一般情况下是指向调用该方法或者属性的对象本身,除非指定了this的指向,否则都是指向window对象,下面这段代码希望对你的理解有帮助。

var obj = {

fun:function(){

this.log("这个地方的this即为obj对象");

},

log:function(text){

console.log(text);

//当然这里的this也是指向obj对象的

}

}

function stu(){

this.getAge = function(){

//此时这里的this指向stu类的实例,即指向下面注释代码中的stuObj对象

//var stuObj = new stu();

//stu.getAge();

}

}

function callback(){

//此时这里的this指向下面被注释代码中的obj,因为他手动指定了this对象

//除了call可以手动指定this之外apply也可以指定this指向

//var obj = {name:"小明"};

//callback.call(obj);

}

除了以上几种情况下,还有一种情况this是指向dom元素本身的,如下:

a href="#" onclick="alert(this.href)"这个this即为这个a标签本身/a

除了以上几种情况,this都是指向window对象的,当然不排除有一些我不清楚的情况。

什么是JavaScript的变量作用域

变量作用域是任何一种程序,都存在的问题!

通俗地讲就是一个变量在多大的范围里有效,也就是能够访问!

用JS打个比方

script type="text/javascript"

var a = 'hello';

function test(){

var b = 'world';

alert(a);//将提示 hello

alert(b);//将提示 world

}

alert(a);//将提示 hello

alert(b);//将提示 undefined 也就是说变量不存在,这是因为b的变量作用于只局限在 函数 test内部。

/script

为什么JavaScript没有块级作用域

js能划分作用域的只有function,块级作用域指的是定义在条件或循环分支中的,像你举的这个函数例子,test定义在for循环之内,再for循环之外也能访问what变量 (这是js的变量提升,可以查一下,它会把what提升到test函数的最开头定义)function test(){

for(var i=0;i3;i++){

var what = "haha";

} console.log(what);

}

test();

如果你这段代码换成Java的,是下面这样的:private void test(){

for(int i=0;i3;i++){

String what =“123";

}

System.out.println(what);

这个方法是编译不通过的,因为what的作用域只在for循环之内,为块级作用域。


文章标题:javascript作用域,js的作用域和作用域链
网页URL:http://scyanting.com/article/dscidpd.html