Function
来源:互联网 发布:监控与数据采集 编辑:程序博客网 时间:2024/06/05 07:00
一.定义函数的方式
1.函数声明的方式
function funName(形参){ 函数体,} funName(实参);
2.函数表达式
var funName=function(形参){ 函数体}funName(实参);
3.区别:函数声明的方式有函数声明提升;(在js哪个地方都可以调用使用,而函数表达式只能在他本身的下面,调用才可以);
4.函数表达式的作用:可以当做值来处理;
更多的时候叫匿名函数;有自己的作用域
const num=11; (function(){ const num=222; console.log(num);//222 })(); console.log(num)//11
二.函数作用域
定义:在函数体内声明的所有变量在函数体内始终是可见的,每个函数都有自己的作用域;
变量:全局变量。局部变量
特征:
1.局部变量的优先级比同名全局变量的优先级高;
const num=10; function aa(){ const num=11; console.log(num);//11 } aa(); //函数声明的函数,木有调用的话,只是一段代码而已,木有任何价值; console.log(num);//10 函数作用域使局部变量名的优先级比同名的全局高; 2.函数体内没有var关键字的变量还是一个全局变量; var num=10; function aa(){ num=20;//全局变量 console.log(num)//20 } aa(); console.log(num);//20 3.在定义函数的时候,形参也是一个局部变量; 4.函数体外的不能访问函数体内的局部变量;
demo:函数声明:
function outer(){ function inner(){ return 100; } return inner() } console.log(outer());//100
函数表达式:
demo1:
function outer(){ var aa=function inner(){ return 100; }; return aa() //返回的是一个值 } console.log(outer());//100
demo2:
function outer(){ var aa=function inner(){ return 100; }; return aa;//返回的是一个函数 } console.log(outer()());//所有就要多()调用函数;
demo3:
function outer(){ return function inner(){ //直接返回的是一个函数; return 100; }; } console.log(outer()());
函数作用域的demos:
function fun(){ num=10; //没有关键词var等,就上升为全局变量了 } fun(); console.log(num);//10
demo2:
<div id="div">点我试试</div> <div id="aa">点我</div> //你需要啥就注入啥,window对象和document对象; //依赖注入 (function($,document){ //形参 $('#div').on('click',function(){ alert(11111); }); $('#aa').on('click',function(){ alert(222222); }); //window.location.href="https://www.baidu.com"; var div=document.createElement('div'); })(jQuery,document);//实参
按钮按那个弹出当前的索引值:
<button>按钮1</button> <button>按钮2</button> <button>按钮3</button> (function(){ var aa=$('button'); for(var i=0;i<aa.length;i++){ aa[i].bb=i; //给数组每个都绑定一个bb的属性,并且把当前的索引值赋值给他; aa[i].onclick=function(){ alert(this.bb+1); } } function $(button){ return document.getElementsByTagName(button); } })()
函数表达式的写法(按钮问题)
(function(){ var aa=$('button'); var bb=function(index){ aa[index].onclick=function(){ alert(index+1); } }; for(var i=0;i<aa.length;i++){ bb(i); //先执行这里;为什么bb写在上面;因为写在下面,执行不了; } function $(button){ return document.getElementsByTagName(button); } })()
自调用匿名函数:(还是按钮问题)
(function(){ var aa=$('button'); for(var i=0;i<aa.length;i++){ (function(index){ //index形参 aa[index].onclick=function(){ alert(index+1); } })(i)//实参 } function $(button){ return document.getElementsByTagName(button); } })()
阅读全文
0 0
- Function
- function
- function
- function $()
- Function
- function
- Function
- $(function(){...});
- function
- Function
- function
- Function
- function
- (function(){})()
- $(function)
- $(function(){...});
- $(function(){});
- $(function(){...});
- [Unity][blender]双足模型动作的编辑&导入到Unity的animation
- 05_Zookeeper_watch机制核心讲解
- 对话框低版本兼容性的处理
- numpy 高级
- 171204之Javascript(一)
- Function
- 06_Zookeeper_安全认证讲解
- java(4)--排序算法及二维数组
- css居中
- [BZOJ2818]Gcd(莫比乌斯反演)
- 07_Zookeeper_实际应用讲解
- 08_Zookeeper_zkClientAPI讲解
- Android Studio快捷键
- sort和qsort对字符数组排序