JS基础语法4
JS笔记4
函数
声明和调用
声明
1 |
|
命名规范:
- 和变量命名基本一致
- 小驼峰
- 前缀尽量为动词
调用
声明(定义)的函数必须调用才会真正被执行,使用 ()
调用函数。
参数
通过向函数传递参数,可以让函数更加灵活多变,参数可以理解成是一个变量。
声明(定义)一个功能为打招呼的函数
- 传入数据列表
- 声明这个函数需要传入几个数据
- 多个数据用逗号隔开
形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)
实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)
形参可以理解为是在这个函数内声明的变量(比如 num1 = 10)实参可以理解为是给这个变量赋值
开发中尽量保持形参和实参个数一致
(如果声明了形参但是实际调用时没有给实参,参数为undefined,可以改进一下
function name(x=0,y=0){
}
)
返回值
函数的本质是封装(包裹),函数体内的逻辑执行完毕后,函数外部如何获得函数内部的执行结果呢?要想获得函数内部逻辑的执行结果,需要通过 return
这个关键字,将内部执行结果传递到函数外部,这个被传递到外部的结果就是返回值。
- 在函数体中使用return 关键字能将内部的执行结果交给函数外部使用
- 函数内部只能出现1 次 return,并且 return 下一行代码不会再被执行,所以return 后面的数据不要换行写
- return会立即结束当前函数
- 函数可以没有return,这种情况默认返回值为 undefined
要返回多个值
可以直接返回一个数组
一些注意点
函数名相同,后面定义的覆盖前面的
参数不匹配:
- 实参多于形参,多的实参剩下,不参与运算(函数内部有一个arguements)
- 形参过多,会自动填上undefined;
作用域
通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突
全局作用域
作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件
处于全局作用域内的变量,称为全局变量
局部作用域
作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域。
处于局部作用域内的变量称为局部变量
如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐
但是有一种情况,函数内部的形参可以看做是局部变量。
1
2
3
4
5
6
7
8
9
10
function fn(){
num=10;
}
fn();
console.log(num);//这种情况把num当成了全局变量
function fun(x,y){
console.log(x);
}
console.log(x); 报错因为形参可以看作局部变量,不能在函数外部使用
==变量访问原则==
能够访问到的情况下先局部,访问不到时逐层向上寻找。
==匿名函数==
function(){}
函数表达式
1 |
|
具名函数的调用可以写到任何位置,
函数表达式只能先声明后使用
立即执行函数
(==必须加分号==)
1 |
|
可以用来防止变量污染
逻辑中断
短路:只存在于&&和||中
&& 一假则假,后面的语句不执行,都真,以后面的真为准
|| 一真则真,后面的语句不执行
都假,以后面的假为准
1 |
|
if ()里面会有隐式转换
null&&1 值是0 null短路,后面不执行,值为null 作为表达式的值不会有转换,进行逻辑判断时有隐式转换
undefined&&1值是undefined
null+1=1
undefined+1=NaN+1=NaN