15、作用域

概念: 规定变量或函数的可被访问的范围和生命周期

分类: 全局作用域 -就是指当前整个页面环境;

局部作用域(函数作用域) -就是指某个函数内部环境

l 变量的作用域

全局变量 - 定义在全局作用域中的变量;全局变量在任何位置均可访问

局部变量 - 定义在函数作用域中的变量;只能在该函数内访问该变量

  • Ø 全局变量:

var a = ‘A’ ;   ---全局变量                  对比    |     var a = ‘A’;  ---全局变量

function fn ( ){                                   |       function fn ( ){

a=’B’; ---全局变量[不加var, 会自动提升(不推荐)] |       var a=’B’; ---局部变量

console.log(a); // ’B’                              |       console.log(a); // ’B’

}                                              |        }

fn( );                                             |     fn( );

console.log(a); // ’B’                                 |     console.log(a); // ’A’

  • Ø 局部变量

var a = 'A'

function fn( ){

var b = 'B';   // 定义局部变量

console.log(a);  // 输出 A  在局部作用域中访问全局变量a

console.log(b);  // 输出 B  在局部作用域中访问局部变量b

}

fn( );

console.log(b);  // 输出报错  在全局作用域中不可以访问局部变量b

【注:在局部作用域中可以访问全局变量,在全局作用域不可以访问局部变量】

² 按值传递:

将全局变量作为函数的实参传递给函数内部

* 函数的内部只是得到全局变量的值 - 不是全局变量

* 函数的内部操作形参的值时 - 不会影响全局变量

u 函数的作用域:

全局函数 - 定义在全局作用域的函数;

内部(私有)函数 - 定义在函数作用域的函数

全局函数与局部函数的作用域对比

16、特殊函数

匿名函数

概念:没有名的函数(没有名,也就无法调用)   注:语法上不许,编写报错,运行报错

eg: function ( ){                             应用于自调函数和回调函数

console.log('this is function');

}

( );

自调函数

概念:自己调用自己的函数(只能调用一次);        特点:只需要定义即可(定义即调用)

格式: ( )( ); 或 ( ( ) );          ---第一个小括号: 定义函数;第二个小括号: 调用函数

作用:用于优化所有全局变量和函数

eg: ( function(a,b){ console.log('this is song' + a); }) ( 1,2 );  //this is song 1

eg: ( function(a,b){ console.log('this is song' + a); } ( 1,2 ));  //this is song 1

回调函数

概念:函数作为参数传递给另一个函数时,作为参数的函数被称之为回调函数

优点:

*可以在不做命名的情况下传递函数(这意味着可以节省全局变量)。

*可以将一个函数调用操作委托给另一个函数(这意味着可以节省一些代码编写工作)。

*同时也有助于提升性能。

匿名回调函数:匿名函数作为另一个函数的参数出现,即目前只有函数调用才会加( )

作为值的函数

概念:函数A作为函数B的结果进行返回,作为结果返回的函数A称为作为值的函数。

即将内部函数放到return语句

作用:在全局作用域中访问到内部函数   在全局作用域中访问到局部变量

最新文章

  1. 批量Shink所有日志或数据文件
  2. WKWebView与JavaScript交互基础
  3. SAP 销售订单的文本项目
  4. 使用PHP获取时间今天 明天 昨天 时间戳的详解
  5. 44个 Javascript 变态题解析 (上\下)
  6. 20145236 《Java程序设计》第7周学习总结
  7. 让站长在SEO时更得心应手的六个细节
  8. HDU 5762 Teacher Bo (暴力)
  9. 利用LRUMap 设计缓存
  10. shell脚本学习之$0,$?,$!等的特殊用法
  11. Win10中英文的切换
  12. poj 1715 Hexadecimal Numbers 排列组合
  13. C#:判断100--999之前的水仙花数
  14. csvkit---python一个牛逼到不行的csv处理库
  15. Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
  16. CODING 敏捷实践完全指南
  17. Java项目模板设置
  18. Vue实战笔记
  19. Servlet 使用ServletContext共享数据,读取web.xml配置
  20. Glide 4.0.0 下之加载本地缓存的图片

热门文章

  1. sass揭秘之@if,@for,@each(转载)
  2. Nginx1.14.2新增tcp/udp代理stream
  3. 嵌入式 ThriftServer in Spark
  4. FFMpeg 常用命令格式转换,视频合成
  5. TensorFlow 制作自己的TFRecord数据集
  6. 作为深度学习最强框架的TensorFlow如何进行时序预测!(转)
  7. InitializingBean 和 DisposableBean 指定初始化和销毁方法
  8. 修改struts2自定义标签的源代码,在原有基础上增加功能(用于OA项目权限判断,是否显示某个权限)
  9. Python的递归深度
  10. 【剑指Offer学习】【面试题63:二叉搜索树的第k个结点】