javascript不像java等其他强类型语句,没有块级作用域(括号内的代码都有自己的作用域,变量在声明它们的代码段之外不可见)一说,但有自己的独特地方,即函数作用域。

函数作用域:变量在声明它们的函数体内以及这个函数体的任意内部函数体内是有定义的。

如下所示代码,在不同位置定义了变量i、j和k,它们都在同一个作用域内,即在函数体内均是有定义的。

function test(){var i=0;        //i在整个函数体内均有定义if(true){var j=0;    //j在整个函数体内均有定义for(var k=0;k<10;k++){    //k在整个函数体内均有定义console.log(k);        //输出0~9
        }console.log(k);            //输出10
    }console.log(j);                //输出0
}
test();

声明提前:变量的声明(不包括赋值)都被提前至函数体顶部。
注意:声明提前是在javascript引擎的预编译时进行的,是在代码开始运行之前。

下面是有关代码及注释:

var i=1;
function test(){console.log(i);                //输出undefinedvar i=2;console.log(i);                //输出2
}
test();

上述代码可等价如下所示:

var i=1;
function test(){var i;console.log(i);                //输出undefinedi=2;console.log(i);                //输出2
}
test();

转载于:https://www.cnblogs.com/aaron-shu/p/4121915.html

javascript中函数作用域和声明提前相关推荐

  1. Javascript读书笔记(六)函数作用域,声明提前,作用域链,闭包

    参照内容来自<JavaScript权威指南>,<JavaScript高级程序设计> 函数作用域 类似C语言的编程语言中有块级作用域,JavaScript中没有块级作用域,取而代 ...

  2. JavaScript中函数作用域之精辟,函数原理的浅入深出,及程序执行预编译之通天编译???

    1.程序执行的前一刻会先将代码预编译一遍,如果有语法错误则直接终止程序运行 //预编译之通天编译 --> 在执行的前一刻,会把文件通天扫描一遍 /** //预编译 函数整体提升(即函数会放到程序 ...

  3. JavaScript中函数作为另一个函数的参数的时候它存在于哪个作用域

    一直对函数作为参数被传递进另外一个函数理解的不是很清除.先看下这段代码吧: function test(fn){var bar = 1;fn(); } var bar = 99; test(funct ...

  4. JavaScript中的作用域,闭包和上下文

    深入理解JavaScript中的作用域和上下文 很多语言当中都会有作用域的概念,它会给我们带来便利,偶尔也会有烦恼,只有清楚地理解和掌握了它,才能更好地为我所用,今天就带来这么一篇文章供大家参考. 介 ...

  5. javascript中关于作用域和闭包

    列表项目 前言 学习了javascript已经很久了,关于这个语言中的这两个特性也是早已耳熟能详,但是在实际的使用的过程中或者是遇到相关的问题的时候,还是不能很好的解决. 因此我觉得很有必要深入的学习 ...

  6. java scope是什么意思_Tutorial:Javascript中的作用域(scope)是什么?(一)(试用FIREBUG了解)...

    From Learn About the Ext JavaScript Library Summary: 本教程讲解了Javascript中的作用域(scope)几个要点和变量可见度(variable ...

  7. JavaScript中函数的三种定义方法

    JavaScript中函数定义的三种方法. 函数的三种定义方法分别是:函数定义语句.函数直接量表达式和Function()构造函数的方法.下面依次介绍这几种方法具体怎么实现. 1. 函数定义语句 // ...

  8. JavaScript中函数里的arguments属性

    <!DOCTYPE html> <html lang="en">     <head>         <meta charset=&qu ...

  9. JavaScript id_好程序员web前端分享Javascript中函数作为对象

    好程序员web前端分享Javascript中函数作为对象,Javascript赋予了函数非常多的特性,其中最重要的特性之一就是将函数作为第一型的对象.那就意味着在javascript中函数可以有属性, ...

最新文章

  1. ubuntu16.04 sudo apt-get update解决Hash sum错误
  2. 树莓派 自动设置分辨率
  3. python技巧 使用值来排序一个字典
  4. 大剑无锋之Redis面试题【推荐】
  5. Dinosaur Run - Dinosaur world Games
  6. 26 FI配置-财务会计-外币评估-定义评估方法
  7. 今晚8点,Oracle ACE男神Roger详解Oracle中为什么没有double write?
  8. 买基金的一个很重要的知识
  9. Linux平台 Oracle 11gR2 RAC安装Part1:准备工作
  10. 常见解压缩软件与其zip格式
  11. 大一高数下册笔记整理_高数下册学习笔记
  12. window防火墙端口映射_Windows 防火墙上也有端口映射功能
  13. qlistview 自定义控件_QT中QListView中放置自定义控件并添加滚动条
  14. 【收藏】40 个学术网站,满足科研文献需求!
  15. ultrascale和arm区别_ZYNQ UltraScale+ MPSoc FPGA初学笔记
  16. Ubuntu下搭建R语言开发环境
  17. Android4.2开发项目教程 Android4.2开发手机新闻移动客户端视频
  18. java ews appointment_EWS API 2.0读取日历信息-读取内容注意事项
  19. Qt绘 —— QPixmap 的使用
  20. ios 调试工具FLEX

热门文章

  1. sdut 3361迷宫探索dfs
  2. HoughCircles 函数
  3. [SOJ1039]Phone Home(深搜,染色问题)
  4. 【HDU5306】【DTOJ2481】Gorgeous Sequence【线段树】
  5. Android开发自定义View
  6. 团队软件开发第一次冲刺(二)
  7. ubuntu中安装hadoop集群
  8. 男性在下一100层【第三层】——高仿手机银行client接口
  9. modsecurity配置指令学习
  10. WCF 第八章 安全