一、全局变量和局部变量
全局变量:当前js页面中均可使用的变量【声明在函数外面的变量】,整个js页面中均可以使用。
局部变量:声明在函数内部的变量,只能在函数内部使用。
eg:

    var a = 1;
console.log(a);
function test(){
console.log(a); //
var b = 2 //
c = 3; //c变量为全局变量,它的声明提前了【在页面的开始声明】
console.log(b); //
}
console.log(b); //错误提示:b is not defined

二、函数的使用
函数作为函数的参数使用:(可以作为回调函数使用)
eg:

    function test(fun){
var msg = '我是test()函数中的变量msg';
fun(msg);
}
//函数test的调用
test(function(param){
console.log(param); //输出:我是test()函数中的变量msg
});

函数作为返回结果来使用:
eg:

    function test(){
return function(){
console.log('我是test()函数的返回函数中的输出语句');
};
}
//函数test的调用
test(); //test();的返回值为:function(){console.log('我是test()函数的返回函数中的输出语句');}
test()(); //输出:我是test()函数的返回函数中的输出语句

三、值传递与地址传递【简单叙述一下】
a.变量是通过值传递的。后面变量值改变不影响前面变量的值【相当于值的复制】
b.对象是通过地址传递的。赋值时使用的是指向该对象的指针地址,获得该指针地址的变量改变
对象属性值,其他拥有相同指针地址的变量指向的堆空间属性值也相应更新改变,所以其前面对象相应的属性值会发生改变。

四、闭包

    //闭包  是函数访问上下文中的变量
var arr = [];
for(var i=0;i<5;i++){
/*
//这样的代码会有闭包现象
arr[i] = function(){
console.log(i);
};
*/ //解决闭包问题,使用立即执行函数来动态获得相应参数i的值
arr[i] = (function(num){
return function(){
console.log(num);
};
})(i);
}
console.log(arr); //Array(5) [i(),i(),i(),i(),i()]
arr[0](); //
arr[1](); //
arr[2](); //

最新文章

  1. web前端基础知识-(八)Ajax
  2. Lind.DDD.ExpressionExtensions动态构建表达式树,实现对数据集的权限控制
  3. Magento Error – The directory is not writable by server.
  4. 灰度图像--图像增强 直方图均衡化(Histogram equalization)
  5. Scrapy:Python的爬虫框架
  6. swift和 oc 混编2-备
  7. [置顶] ASP.Net中服务器控件的生命周期
  8. shrio配置说明
  9. Knockout js 绑定 radio 时,当绑定整形的时候,绑定不生效
  10. jquery 事件注册 与重复事件处理
  11. React+ANTD项目使用后的一些关于生命周期比较实用的心得
  12. 一键解决更改计算机名后无法启动MSSQLSERVER服务问题
  13. appium---android元素定位
  14. 微信小程序——报错汇总
  15. getParameter() getInputStream()和getReader() 区别 这三种方法是有冲突的,因为流只能被读一次。
  16. [UGUI]图文混排(二):Text源码分析
  17. [Jmeter] Jmeter Plugins
  18. 一个完整的SAP RFC调用接口封装
  19. jqprint 打印分页
  20. 20145328 《Java程序设计》第5周学习总结

热门文章

  1. SEAndroid
  2. Struts2工作原理和核心文件
  3. bitcoinjs-lib 哈希交易之多笔交易合并。
  4. Zookeeper:Unable to read additional data from client sessionid 0x00, likely client has closed socket
  5. kotlin基础 尾递归
  6. Visual-Based Autonomous Driving Deployment from a Stochastic and Uncertainty-Aware Perspective
  7. &amp;和&amp;&amp;的区别?
  8. shell脚本检查是否存在tun0虚拟网卡,若不不存在服务器更改port,并重启服务器,客户端修改port,并重新启动客户端
  9. spark 更改日志输出级别
  10. C++对象模型:单继承,多继承,虚继承,菱形虚继承,及其内存布局图