青海省公路建设总公司网站,金华建设局政务网站,网站解封原因,威海网站建设JavaScript 基础四 函数 1.1 函数1.2 函数使用函数名命名规范函数的调用 1.3 函数传参#xff08;1#xff09;声明语法#xff08;2#xff09;调用有参函数#xff08;3#xff09;形参和实参#xff08;4#xff09;参数默认值 1.4 函数返回值#xff08;1#xf… JavaScript 基础四 函数 1.1 函数1.2 函数使用函数名命名规范函数的调用 1.3 函数传参1声明语法2调用有参函数3形参和实参4参数默认值 1.4 函数返回值1语法2细节 1.5 作用域特殊情况变量的访问原则案例 1.6 匿名函数 1.1 函数
函数 function是被设计为执行特定任务的代码块。 这么做的优势是有利于精简代码方便复用。
1.2 函数使用
函数的声明语法
function 函数名() {函数体
}例
function sayHi() {document.write(hi~)
}函数名命名规范
和变量命名基本一致尽量小驼峰式命名法前缀应该为动词命名建议常用动词约定 e.g. getName(), addSquares()
动词含义can判断是否可执行某个动作has判断是否含有某个值is判断是否为某个值get获取某个值set设置某个值load加载某些数据
函数的调用
//函数调用这个函数体内的代码逻辑会被运行
函数名()function sayHi() {document.write(hi~)
}sayHi() // 函数调用1.3 函数传参
若函数完成功能需要调用者传入数据那么就需要用有参数的函数。这样可以极大提高函数的灵活性。
1声明语法
function 函数名(参数列表) {函数体
}参数列表 ① 传入数据列表 ② 声明这个函数需要传入几个数据 ③ 多个数据用逗号隔开
例子
function getSquare(num1) {document.write(num1 * num1)
}function getSum(num1, num2) {document.write(num1 num2)
}2调用有参函数
语法函数名传递的参数列表
例getSquare(8)
3形参和实参 形参声明函数时写在函数名右边小括号里的叫形参形式上的参数实参调用函数时写在函数名右边小括号里的叫实参实际上的参数形参可以理解为是在这个函数内声明的变量比如 num1 10实参可以理解为是给这个变量赋值开发中尽量保持形参和实参个数一致我们曾经使用过的 alert(‘打印’), parseInt(‘11’), Number(‘11’) 本质上都是函数调用的传参
4参数默认值
形参 可以看做变量但是如果一个变量不给值默认是undefined。 如果是function getSum(num1, num2) 不传参undefined undefined 结果是NaN。
改进用户不输入实参可以给 形参默认值可以默认为 0 这样程序更严谨。 说明这个默认值只会在缺少实参参数传递时 才会被执行所以有参数会优先执行传递过来的实参 否则默认为 undefined。
function getSum(num1 0, num2 0) {document.write(num1 num2)
}getSum() // 0 如果不给形参默认值结果是 NAN例参数是数组 给形参 此题是数组一个默认值 arr []
bodyscript// 1. 封装函数// 给一个参数的默认值function getArrSum(arr []) {// console.log(arr)let sum 0for (let i 0; i arr.length; i) {sum arr[i]}console.log(sum)}getArrSum([1, 2, 3, 4, 5])getArrSum([11, 22, 33])getArrSum() // 0/script
/body
1.4 函数返回值
其实我们前面已经接触了很多的函数具备返回值
let num1 prompt(请输入你的年龄)
let num2 parseInt(111)当然有些函数则没有返回值
alert(我是弹框不需要返回值)1语法
当函数需要返回数据出去时用return关键字 语法return 数据
例
function getSum(num1 0, num2 0) {return num1 num2
}let sum getSum(1, 2) // 32细节
细节 ① 在函数体中使用 return 关键字能将内部的执行结果交给函数外部使用 ② return 后面代码不会再被执行会立即结束当前函数所以 return 后面的数据不要换行写 ③ return函数可以没有 return这种情况函数默认返回值为 undefined
function fn() {
}let re fn()
console.log(re) // undefined④ 两个相同的函数后面的会覆盖前面的函数。 ⑤ 在Javascript中 实参的个数和形参的个数可以不一致。 如果形参过多 会自动填上undefined (了解即可) 如果实参过多 那么多余的实参会被忽略 (函数内部有一个arguments,里面装着所有的实参) ⑥ 函数一旦碰到return就不会在往下执行了 函数的结束用return
1.5 作用域
通常来说一段程序代码中所用到的名字并不总是有效和可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。 作用域的使用提高了程序逻辑的局部性增强了程序的可靠性减少了名字冲突。
全局变量在任何区域都可以访问和修改局部变量只能在当前函数内部访问和修改
特殊情况
变量有一个坑 特殊情况
如果函数内部变量没有声明直接赋值也当全局变量看但是强烈不推荐但是有一种情况函数内部的形参可以看做是局部变量。
变量的访问原则
变量访问原则采取就近原则的方式来查找变量最终的值。
只要是代码就至少有一个作用域写在函数内部的局部作用域如果函数中还有函数那么在这个作用域中就又可以诞生一个作用域访问原则在能够访问到的情况下 先局部 局部没有在找全局
案例
function f1() {let num 123function f2() {console.log( num )}f2()
}let num 456
f1()答案是123。 f2 的 console.log( num )中没有 num就向上找找到了 f1 的 num
1.6 匿名函数 匿名函数 没有名字的函数, 无法直接使用。 使用方式 ① 函数表达式 ② 立即执行函数
① 函数表达式
将匿名函数赋值给一个变量并且通过变量名称进行调用 我们将这个称为函数表达式。 声明语法
let fn - function () {// 函数体
}调用语法
fn() //函数名其中函数的形参和实参使用跟具名函数一致。
注意 ① 具名函数的调用可以写在任何位置 ② 匿名函数 函数表达式必须先写表达式后调用
② 立即执行函数
场景介绍避免全局变量之间的污染。 注意 多个立即执行函数要用 ; 分号 隔开要不然会报错 不需要调用立即执行 语法
//方法1
(function () { console.log(11)}) ();//方法2
(function () {console.log(11)} ());