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

js中的var有块级作用域吗_百度知道
js中的var有块级作用域吗
我有更好的答案
1;LANGUAGE=&JavaScript&&var&nbsp&b&=&SCRIPT&//a是全局变量functin&test(){ var&2;//b只在方法test中有效}&/SCRIPT&a&=&nbsp
采纳率:85%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。其他回答(4)
第二函数内的var color="blue";这个是局部变量,只能在函数内部引用,出了函数就不可以了,如果在外面也可以使用有两种方法,一个是把函数里的var 去掉;第二方法就是给函数一个返回值,代码:
if (true){  
function color(){  
var color="blue";
return color   
alert(color());//"blue"
这样就可以了
收获园豆:10
if (true){
  var color="blue"
alert(color);//"blue"//没有块级作用域,可以访问if中的变量,if只是起到控制作用
if (true){
  function(){
  var color="blue"
alert(color);//"blue"
//这样是访问不到的。function中的变量只在function作用域能访问,可以在方法外定义全局变量或去掉var
收获园豆:10
如果仅仅是想知道结果,运行一下就行了嘛,当然,如果想知道原理再说。
收获园豆:10
园豆:9364
访问不到,Javascript中用var申明的变量只有函数作用于,没有块级作用域,你申明在一个函数里面,外面当然不能访问到了。
你可以深入看看 Javascript作用于链,这个还是比较重要的,
收获园豆:10
清除回答草稿
&&&您需要以后才能回答,未注册用户请先。JS中模仿块级作用域的方法
  有的语言有模块级作用,可以让for语句中定义的初始化话变量无法在循环外访问,但是在JS中没有这个功能,导致for语句中定义的变量循环结束后仍然在作用,但是大多数时候都是i不需要的,用JS的时候应该怎么办呢?学码思老师给大家案例一个JS中模仿块级作用域的方法,如下所示:function outputNumbers(count) {& & for(var i=0;i&10;i++){& & & & //console.log(i);& & }& & console.log(i);}  在类似于Java和C语言中,无法在for循环外访问i的,因为i是在for循环的块级作用域中。而JavaScript中由于没有块级作用域,所以i是能够访问的。&  匿名函数时可以用作模拟块级作用域,用作块级作用域(通常也叫做私有作用域)的匿名函数的语法如下所示://匿名自执行函数(function(){& & //这里是块级作用域})()(function(){})实际上是一个函数表达式,我们可以根据以下代码进行理解:var fun = function(){& & //some code};fun();//调用fun函数/*我们是将一个函数表达式传递给了一个变量,所以fun()等价于下面代码function(){& & //some code}()但是这样不符合JavaScript代码语法规则,因为JavaScript会把function开头的作为函数声明语句,把函数声明语句转化为函数表达式,需要在外面包一个小括号*/(function(){& & //some code})()//无论什么时候需要一些临时变量,就可以用私有作用域function outputNumbers(count) {& & (function(){& & & & //匿名自执行函数执行完,i就被销毁了,外部访问不到,保证变量私有化& & & & for(var i=0;i&10;i++){& & & & & & //console.log(i);& & & & }& & }();& & console.log(i);//导致错误}  这种技术经常在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。例如:(function(){& & var now = new Date();& & if (now.getMonth() == 0 && now.getDate() == 1) {& & & & //1月1日& & & & alert(&Happy new year&);& & }})()  &&&  JS中模仿块级作用域的方法就为大家介绍到这里,变量可以在用var关键字声明的时候,自动被添加到距离最近的可用环境中。在函数看来,这个就是函数的局部环境,如果没有声明这个变量就将其初始化,则会被添加到全局环境中。所以可以看到这个JS模仿的功能真的是很实用呢。
学码思Web前端老师给大家案例一个JS中模仿块级作用域的方法,如下所示。
进入移动互联网时代,自学UI设计的人开始增多,但这毕竟是一门专业技能,学起来不简单,一定要付出加倍努力。今天就让合肥学码思UI培
各种各样的java培训机构层出不穷,广告宣传让人目不暇接,比起师资、设备等外部条件,更多人关注的还是费用、价钱等涉及到自身利益的
学码思动态JS中的函数作用域,和C语言中的块级作用域
今天github发现了一个提问。如下:
& function name1(name){
this.name=
&var name=new name1("11");
& document.write(name.name);
为啥输出的是undefined而不是11。把name1改成name后又是11.
这里name。name先后是undefined和11。
这里就是涉及到了JS中的函数作用域。JS中函数作用域是指,在JS中函数中定于的变量在函数运行完成之后会自动销毁,也就是说,在函数外,函数内的变量是不可见的。
而C语言中的块级作用域如下:
void main()
printf("%d/n",j);
这里J无法访问。因为J是定义在if块中。在这外面是无法访问的。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 js 块级作用域 的文章

 

随机推荐