JS基础语法4

JS笔记4

函数

声明和调用

声明

1
2
3
4
5
声明(定义)一个完整函数包括关键字、函数名、形式参数、函数体、返回值5个部分
function name(形参){

return xx
}

命名规范:

  1. 和变量命名基本一致
  2. 小驼峰
  3. 前缀尽量为动词

调用

声明(定义)的函数必须调用才会真正被执行,使用 () 调用函数。

参数

通过向函数传递参数,可以让函数更加灵活多变,参数可以理解成是一个变量。

声明(定义)一个功能为打招呼的函数

  • 传入数据列表
  • 声明这个函数需要传入几个数据
  • 多个数据用逗号隔开

形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)

实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)

形参可以理解为是在这个函数内声明的变量(比如 num1 = 10)实参可以理解为是给这个变量赋值

开发中尽量保持形参和实参个数一致

(如果声明了形参但是实际调用时没有给实参,参数为undefined,可以改进一下

function name(x=0,y=0){

}

)

返回值

函数的本质是封装(包裹),函数体内的逻辑执行完毕后,函数外部如何获得函数内部的执行结果呢?要想获得函数内部逻辑的执行结果,需要通过 return 这个关键字,将内部执行结果传递到函数外部,这个被传递到外部的结果就是返回值。

  1. 在函数体中使用return 关键字能将内部的执行结果交给函数外部使用
  2. 函数内部只能出现1 次 return,并且 return 下一行代码不会再被执行,所以return 后面的数据不要换行写
  3. return会立即结束当前函数
  4. 函数可以没有return,这种情况默认返回值为 undefined

要返回多个值

可以直接返回一个数组

一些注意点

  1. 函数名相同,后面定义的覆盖前面的

  2. 参数不匹配:

    1. 实参多于形参,多的实参剩下,不参与运算(函数内部有一个arguements)
    2. 形参过多,会自动填上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
2
let fn=function(){
}

具名函数的调用可以写到任何位置,

函数表达式只能先声明后使用

立即执行函数

(==必须加分号==)

1
2
(function(){ xxx  })();
(function(){xxxx}());

可以用来防止变量污染

逻辑中断

短路:只存在于&&和||中

&& 一假则假,后面的语句不执行,都真,以后面的真为准

|| 一真则真,后面的语句不执行

​ 都假,以后面的假为准

1
2
3
4
5
6
7
8
console.log(Boolean('pink'))    true
console.log(Boolean('')) false
console.log(Boolean(0)) false
console.log(Boolean(90)) true
console.log(Boolean(-1)) true
console.log(Boolean(undefined)) false
console.log(Boolean(null)) false
console.log(Boolean(NaN)) false

if ()里面会有隐式转换

null&&1 值是0 null短路,后面不执行,值为null 作为表达式的值不会有转换,进行逻辑判断时有隐式转换

undefined&&1值是undefined


null+1=1

undefined+1=NaN+1=NaN


JS基础语法4
https://wjcbolg.cn/2023/04/21/JS笔记4/
作者
JasonWang
发布于
2023年4月21日
许可协议
BY-JW