vs做网站连数据库,什么网站百度的收录高,广州googleseo网络营销,网站论坛建设函数
函数#xff1a;实现抽取封装#xff0c;执行特定任务的代码块#xff0c;方便复用
声明 函数命名规范 尽量小驼峰 前缀应该为动词#xff0c;如getName、hasName 函数的调用 函数体是函数的构成部分 函数传参 参数列表里的参数叫形参#xff0c;实际上写的数据叫实…函数
函数实现抽取封装执行特定任务的代码块方便复用
声明 函数命名规范 尽量小驼峰 前缀应该为动词如getName、hasName 函数的调用 函数体是函数的构成部分 函数传参 参数列表里的参数叫形参实际上写的数据叫实参
形参可以看作变量如果变量不给值默认为未定义undefined
例如一个两数求和的函数如果用户在使用的时候不传入实参两个未定义undefinedundefined的结果是什么
NaN
为了防止出现异常的NaN我们可以在用户不输入参数的时候提供默认参数形参默认值可以默认为0 形参默认值写在函数里形参声明的地方 function getArrSum(arr[]) {//保证程序不报错let sum0for (let i 0; i arr.length;i){sumarr[i]}console.log(sum);}let arr[]for(let i0;i10;i){arr[i]prompt(请输入数字)}getArrSum(arr)
除了这种写法还有
逻辑中断 猜猜这段代码的打印结果
let age18console.log(falseage)console.log(age)
答案是false和18age没有变因为左边为false所以不执行右边的表达式 关于Boolean的转换 ‘’ 、0、undefined、null、false、NaN 转换为布尔值后都是false, 其余则为 true 一些其他隐式转换 11 -2-2 null经过数字转换为0null3033 undefined经过数字转换为NaN除了字符串拼接其余都为NaNundefined3NaN let n undefinedconsole.log(n sss); 函数返回值
把函数处理完的结果返回给调用者
用return关键字 函数体内使用return关键字能返回函数体执行的结果交给外部使用
return后面的代码不执行
return函数没有return的时候函数默认返回undefined
返回多个数据 function getArr(arr []) {for (let i 0; i 5; i) {arr[i] prompt(请输入数字)}}function getMax(arr []) {let min arr[0]let max arr[0]for (let i 0; i 5; i) {if (arr[i] max) max arr[i]if (arr[i] min) min arr[i]}return [max, min]//新数组}let arr []getArr(arr)console.log(arr)console.log(getMax(arr)) 断点调试进入函数内部f11步入不进入函数内部f10(步过) js没有函数重载只要函数名一样写在后面的函数会覆盖前面的函数 js里传递的实参个数可以少于形参的个数会自动填为undefined如果实参多余形参多余的实参会被忽略 break结束循环和switchreturn结束函数
作用域
限定数据的可用性代码范围就叫作用域作用域提高了程序逻辑的局部性、增强了可靠性、减少了名字冲突
相应的变量有局部变量和全局变量之分 如果函数内部变量没有声明直接赋值也当全局变量看但是强烈不推荐 但是有一种情况函数内部的形参可以看做是局部变量 变量访问原则 只要是代码就至少有一个作用域 写在函数内部的局部作用域 如果函数中还有函数那么在这个作用域中就又可以诞生一个作用域 在能访问的情况下先局部局部没有再全局
采取就近原则查找变量的最终值
匿名函数
第一种写法
函数表达式将匿名函数赋值给一个变量并且通过变量名进行调用 和go像
具名函数有名字的函数的调用可以放在任何位置
函数表达式必须先声明再调用
后面学api会用
第二种写法
立即执行函数 括号的位置不同在声明的时候执行
多个立即执行的时候一定要在后面加分号分号也可以写前面
好处是防止变量污染
函数调用练习 let num prompt(用户输入秒数)function getTime(t) {let day parseInt(t / 3600 / 24)let h parseInt(t / 3600 % 24)let m parseInt(t / 60 % 60)let s parseInt(t % 60)day 10 ? 0 day : dayh h 10 ? 0 h : hm m 10 ? 0 m : ms s 10 ? 0 s : sreturn ${t}转换为${day}天${h}小时${m}分钟${s}秒}let str getTime(num)document.write(str) 函数里不声明直接赋值外部可以访问会有风险