首页>>百科常识

什么是块级作用域

今天宠物迷的小编给各位宠物饲养爱好者分享块的作用域的宠物知识,其中也会对什么是块级作用域(块级作用域和函数作用域区别)进行专业的解释,如果能碰巧解决你现在面临的宠物相关问题,别忘了关注本站哦,现在我们开始吧!

什么是块级作用域,为什么说js没有块级作用域

js的if中没有块级作用域,js中只有函数作用域。没有块级作用域一说

为什么JavaScript没有块级作用域

什么是块级作用域

js中在一个函数中定义一个for循环:for(var i=0;i<5;i++) 其中的i并不会随着for循环的结束就销毁,i会一直存在该函数中,这就是js和其他语言的区别,也就是js没有块级作用域的概念。看以下代码: [html] view plain copy function test(){ for(var i=0;i<5;i++) { alert(i); } alert('last_i: '+i); } test(); 运行以上代码,执行for循环会弹出5次窗口分别为0,1,2,3,4。执行到4意味着for循环结束,其他语言下i就会销毁,执行alert(‘last_i:’ +i)按理说会为undefined,但js中不是,i会一直存在函数中,也就是说执行到alert(‘last_i :’ +i)时会弹出last_i: 5 。而这个5就是经过for循环累加后的i。怎样实现js的块级作用域呢?那就是匿名函数。在匿名函数中定义的任何变量都会在执行结束后销毁,这样就很类似其他语言中的for循环中的i在执行循环后销毁i。此处的匿名函数是要自执行的,也就是(function(){......})()这种形式,两个()(),前一个放函数体,后一个代表‘执行’的意思,就像普通的函数调用,当然了也可以放参数如:(函数体)(参数)。用匿名函数模仿块级作用域的代码如下: [html] view plain copy function test(){ (function(){ //匿名函数中定义的所有变量都会在执行结束时被销毁 for(var i=0;i<5;i++) alert(i); })() alert(i);//报错,不识别i } test(); 此时定义在匿名函数中的for循环,在函数阶数后就销毁i,此时代码alert('last_i:'+i)运行就会报错。这样就和其他语言中的块级作用域一样。

为什么说JS不支持块级作用域

在c等语言中。上面的if(i) 这里的i的作用域是在 if这个块中的 但是在js中。i是全局的。如果 这么写 if(var i=0){} 现在你在if块之外也能访问到i。这就是没有块作用域

什么是块级作用域啊,js没有块级作用域是啥意思

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

如果你这段代码换成Java的,是下面这样的:private void test(){
for(int i=0;i<3;i++){

String what =“123";
}
System.out.println(what);

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

有个关于Java内部类的问题,求各位大佬解答,非常感谢

//帮你详细注释了,多态很重要,也很饶头,尤其内部类,你多看看,我注释的比较通俗!//不足之处还请指点!

C++中for语句块中哪些部分算同一块作用域?请举例说明。

for(int i=0;i<100;i++)
{
i在这个大括号内有效,出了这个大括号,不能使用这个i
}

js中 什么是作用域,如何划分作用域

通俗说作用域是能访问到变量或对象的区域,通常这个作用域只是针对局部变量,对于全局变量来说,哪里都可以访问的到。作用域划分就不好说了,一般是看对象或变量定义所在的位置,如果一个变量只在一个函数内定义,那么它的作用域就是这个函数内。如果变量在闭包中定义,那么它的作用域就是闭包。作用域是相对而言,没有太多明确的划分。

本文由宠物迷 百科常识栏目发布,非常欢迎各位朋友分享到个人朋友圈,但转载请说明文章出处“什么是块级作用域