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

JavaScript029

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

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

for(var i=0i<3i++){

var what = "haha"

} console.log(what)

}

test()

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

for(int i=0i<3i++){

String what =“123"

}

System.out.println(what)

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

本文实例讲述了JS块级作用域和私有变量。分享给大家供大家参考,具体如下:

块级作用域

(function(){

//这里是块级作用域

})()

例如:

(function(){

for(var

i=0i<5i++){

alert(i)//0,1,2,3,4

}

})()

alert(i)//error

上例中,定义了一个块级作用域,变量i在块级作用域中可见的,但是在块级作用域外部则无法访问。

这种技术经常在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。

私有变量

任何在函数中定义的变量,都可以认为是私有变量。因为不能在函数的外部访问这些变量。私有变量包括函数的参数、局部变量和在函数内部定义的其他函数。

我们把有权访问私有变量和私有函数的公有方法称为特权方法:

function

MyObject(){

//私有变量和私有函数

var

privateVariable

=

10

function

privateFunction(){

return

false

}

//特权方法,特权方法作为闭包有权访问在构造函数中定义的所有变量和函数

this.publicMethod

=

function

(){

privateVariable++

return

privateFunction()

}

}

var

obj

=

new

MyObject()

obj.publicMethod()//

原型模式定义共有方法:

(function(){

//私有变量和私有函数

var

privateVariable

=

10

function

privateFunction(){

return

false

}

//构造函数

MyObject

=

function(){

}

//公有/特权方法

MyObject.prototype.publicMethod

=

function(){

privateVariable++

return

privateFunction()

}

})()

模块模式:

var

singleton

=

function(){

//私有变量和私有函数

var

privateVariable

=

10

function

privateFunction(){

return

false

}

//特权/公有方法和属性

return

{

publicProperty:

true,

publicMethod

:

function(){

privateVariable++

return

privateFunction()

}

}

}()

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

您可能感兴趣的文章:详解JavaScript

新语法之Class

的私有属性与私有方法JavaScript私有变量实例详解浅谈js继承的实现及公有、私有、静态方法的书写深入了解JavaScript

私有化