js函数(续)
2024-09-19 21:46:43
一、全局变量和局部变量
全局变量:当前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](); //
最新文章
- web前端基础知识-(八)Ajax
- Lind.DDD.ExpressionExtensions动态构建表达式树,实现对数据集的权限控制
- Magento Error – The directory is not writable by server.
- 灰度图像--图像增强 直方图均衡化(Histogram equalization)
- Scrapy:Python的爬虫框架
- swift和 oc 混编2-备
- [置顶] ASP.Net中服务器控件的生命周期
- shrio配置说明
- Knockout js 绑定 radio 时,当绑定整形的时候,绑定不生效
- jquery 事件注册 与重复事件处理
- React+ANTD项目使用后的一些关于生命周期比较实用的心得
- 一键解决更改计算机名后无法启动MSSQLSERVER服务问题
- appium---android元素定位
- 微信小程序——报错汇总
- getParameter() getInputStream()和getReader() 区别 这三种方法是有冲突的,因为流只能被读一次。
- [UGUI]图文混排(二):Text源码分析
- [Jmeter] Jmeter Plugins
- 一个完整的SAP RFC调用接口封装
- jqprint 打印分页
- 20145328 《Java程序设计》第5周学习总结
热门文章
- SEAndroid
- Struts2工作原理和核心文件
- bitcoinjs-lib 哈希交易之多笔交易合并。
- Zookeeper:Unable to read additional data from client sessionid 0x00, likely client has closed socket
- kotlin基础 尾递归
- Visual-Based Autonomous Driving Deployment from a Stochastic and Uncertainty-Aware Perspective
- &;和&;&;的区别?
- shell脚本检查是否存在tun0虚拟网卡,若不不存在服务器更改port,并重启服务器,客户端修改port,并重新启动客户端
- spark 更改日志输出级别
- C++对象模型:单继承,多继承,虚继承,菱形虚继承,及其内存布局图