函数
函数:function,是被设计为执行特定任务的代码块
1、语法:
// 函数声明
function sayHi(){
//函数体
document.write('hi~')
}
// 函数调用 记得加上小括号
sayHi()
2、命名
和变量命名基本一致
尽量小驼峰式命名法
前缀应该为动词
命名建议:常用动词约定
3、函数的调用语法
声明(定义)的函数必须调用才会真正被执行,使用 () 调用函数
函数名 () ,可以多次调用
4、函数体
函数体是函数的构成部分,它负责将相同或相似代码“包裹”起来,直到函数调用时函数体内的代码才会被执行,函数的功能代码都要写在函数体当中
5、函数传参
function 函数名 (形参){
函数体
}
函数名(实参)
形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)
实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)
形参可以理解为是在这个函数内声明的变量(比如 num1 = 10)实参可以理解为是给这个变量赋值
变量的坑::
1、如果函数内部变量没有声明 直接赋值,当做全局变量来看
全局变量来看 强烈不允许 后面会把前面的覆盖
2、函数内部的形参也可以当做局部变量
3、变量的访问原则:在能够访问的情况下先局部,局部没有一直往上寻找,直到找到全局为止
调用语法,通过下面的 实参 将数据 传递到 上面的形参里面,传入数据时,有几个数据就写几个,数据之间用逗号隔开
开发中尽量保持形参和实参个数一致
实参多余形参 剩余的实参不参与运算
实参少于形参 会得到结果 NaN
6、函数返回值
通过在函数体里面添加 return 关键字,这样当我们调用某个函数时,函数会返回一个结果出来
注意:
1、 return 关键字后面的代码不会执行
2、 return 关键字后面的数据不要换行,否则会 undefined
3、 return 函数可以没有 return 但是会默认返回 undefined
//比如求任意两个数的最大值,并返回
function setMax(x,y){
// 三元运算符
return x>y ? x : y //通过return 将值返回到 函数的调用者
}
// 调用函数
let max = setMax(50,70)
document.write(max)
7、作用域
1、 全局作用域 : 整个script 标签或者单独的js文件,页面的任何地方都可以使用(全局变量)
2、 局部作用域 : 在函数内部声明,只能在当前函数的内部使用(局部变量)
3、 块级作用域 : 在大括号里面声明的变量(分支 循环),只能在大括号内部使用,必须是let const声明的变量
var 声明的变量 没有块级作用域
函数内部的变量没有用 let 直接赋值,属于是全局变量,而且会将前面的覆盖掉
函数内部的形参 可以当做局部作用域
8、匿名函数
没有名字的函数, 无法直接使用
使用方式: 函数表达式 立即执行函数
函数表达式 : 将匿名函数赋值给一个变量,并且通过变量名称进行调用 我们将这个称为函数表达式
立即执行函数:避免全局变量之间的污染 多个执行函数之间用 ; 隔开
//立即执行函数 避免全局变量之间的污染 多个执行函数之间用 ; 隔开
方法一
(function(){})()
方法二
(function(){}())
9、逻辑中断
逻辑与 短路 运算
如果 表达式 1 结果为真,则返回表达式2 如果表达式 1 为假,则返回表达式1
document.write(表达式1 && 表达式2)
document.write(55 && 66) //66
document.write('<br>')
document.write(0 && 66) //0
逻辑或 短路 运算
如果表达式 1 为真,则返回表达式 1 ,如果表达式 1 为假,则返回表达式2
document.write(表达式1 || 表达式2)
document.write(11 || 22)
document.write('<br>')
document.write(0 || 22)
10、转换为Boolean型
Boolean(内容)
记忆: ‘’、0、undefined、null、false、NaN 转换为布尔值后都是false, 其余则为 true
隐式转换:
1. 有字符串的加法 “” + 1 ,结果是 “1”
2. 减法 - (像大多数数学运算一样)只能用于数字,它会使空字符串 "" 转换为 0
3. null 经过数字转换之后会变为 0
4. undefined 经过数字转换之后会变为 NaN