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的作用域和作用域链
路径分享:http://hbruida.cn/article/dscidpd.html