Js基础知识(作用域、特殊函数---自调、回调、作为值的函数)
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语句
作用:在全局作用域中访问到内部函数 在全局作用域中访问到局部变量
最新文章
- 批量Shink所有日志或数据文件
- WKWebView与JavaScript交互基础
- SAP 销售订单的文本项目
- 使用PHP获取时间今天 明天 昨天 时间戳的详解
- 44个 Javascript 变态题解析 (上\下)
- 20145236 《Java程序设计》第7周学习总结
- 让站长在SEO时更得心应手的六个细节
- HDU 5762 Teacher Bo (暴力)
- 利用LRUMap 设计缓存
- shell脚本学习之$0,$?,$!等的特殊用法
- Win10中英文的切换
- poj 1715 Hexadecimal Numbers 排列组合
- C#:判断100--999之前的水仙花数
- csvkit---python一个牛逼到不行的csv处理库
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- CODING 敏捷实践完全指南
- Java项目模板设置
- Vue实战笔记
- Servlet 使用ServletContext共享数据,读取web.xml配置
- Glide 4.0.0 下之加载本地缓存的图片
热门文章
- sass揭秘之@if,@for,@each(转载)
- Nginx1.14.2新增tcp/udp代理stream
- 嵌入式 ThriftServer in Spark
- FFMpeg 常用命令格式转换,视频合成
- TensorFlow 制作自己的TFRecord数据集
- 作为深度学习最强框架的TensorFlow如何进行时序预测!(转)
- InitializingBean 和 DisposableBean 指定初始化和销毁方法
- 修改struts2自定义标签的源代码,在原有基础上增加功能(用于OA项目权限判断,是否显示某个权限)
- Python的递归深度
- 【剑指Offer学习】【面试题63:二叉搜索树的第k个结点】