博客列表 >js函数的基本规范和特征

js函数的基本规范和特征

Jason Pu?
Jason Pu?原创
2021年01月05日 11:46:51799浏览

一:常量与变量

js 变量命名规范:字母、数字、下划线 _ 、美元符号$(不能以数字作开头)
变量的特点:
1.可重新声明;
3.可重新赋值;
4.可只声明,无赋值,返回值为undefined;

常量的特点:
1.一旦声明则无法改变的量;
2.声明必须赋值;
3.不可重新赋值;
4.不可重新声明;

例如:

  1. // 1.变量
  2. // 只声明:
  3. let test1;
  4. console.log(test1);//undefined
  5. // 声明并初始化:
  6. let test2 = 2;
  7. console.log(test2);//2
  8. // 更新
  9. test1 = 1;
  10. console.log(test1);//1
  11. // 2.常量:
  12. //const testa ;//会报错
  13. const testb =188;
  14. console.log(testb);//188
  15. testb = 999;//常量的值不可以更新,所以会报错

二;函数/匿名函数/箭头函数的基本特点

函数的特点:

1.因为js代码是从上到下执行,所以无法在一个变量的声明前面访问这个变量,但是函数可以,也就是函数无论在任何地方都会跑到最前面去,这叫函数的提升,只要声明,就可以自动提升到顶部

2.js中的函数可以重写,在其它语言中不存在

匿名函数的特点

1.匿名函数是直接把一个函数赋值给一个变量/常量

2.匿名函数可以避免函数的提升

3.如果把匿名函数赋值给一个常量,那这个匿名函数将无法被改写

箭头函数的特点:

1.箭头函数是用来简化匿名函数的语法糖,将普通函数的“function”关键字和函数名都删掉,并使用“=>”连接参数列表和函数体
基础语法:
(arg1,arg2)=>{function body};

2.如果只有一条语句,可以省略函数的”{}”:

  1. let add = (num1,num2)=>num1+num2;
  2. console.log(add(55,33));//88

3.如果只有一个参数可以连()都省了,如果没有参数,则要保留():

  1. let echoName = name => `我的名字是${name}`;
  2. console.log(echoName('Jasper'));//我的名字是Jasper

三:作用域和闭包

1.全局作用域:只要声明在函数之外的都是全局作用域
例如:

  1. let num1 = 100;
  2. function add(){
  3. //在函数外声明的变量,可以在函数内使用
  4. return num1;
  5. };
  6. console.log(add());//100

2.函数作用域:函数里面声明的变量叫私有变量,函数内部可以使用,,函数中的私有变量在函数外是无法使用的
例如:

  1. function num(){
  2. let a=0;
  3. };
  4. //在函数中声明的变量在函数外无法使用
  5. console.log(a);//a is not defined

3.块作用域:块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域,声明的变量只能在块级作用域里访问
注:var不支持块作用域

4.自由变量:即不是函数参数变量也不是私有变量,存在于函数调用上下文中

5.闭包:能够访问自由变量的函数,有时候需要得到函数内的私有变量,那就在函数的内部,再定义一个函数,并返回
例如:这个aaa()里面返回的子函数,就是闭包了

  1. function aaa(){
  2. let n = 100;
  3. return function () {
  4. return n;
  5. }
  6. }
  7. console.log(aaa()());//100

一个函数中的变量相对于本函数是一个私有变量,但是对于引用它的子函数,就是一个自由变量了:

  1. function aaa(){
  2. let n = 100;
  3. return function () {
  4. return n++;
  5. }
  6. }
  7. let bbb = aaa();
  8. console.log(bbb());//100
  9. console.log(bbb());//101
  10. console.log(bbb());//102

四:js中的高阶函数

基本定义:使用函数为参数或者将函数做为返回值的函数
1. 回调函数:一个被作为参数传递给另一个函数的函数,例:

  1. //这是一个普通的函数
  2. function say (value) {
  3. alert(value);
  4. }
  5. //下面是一个回调函数
  6. function hdhs(aFun,value){
  7. aFun(value);
  8. }
  9. //运行一下:
  10. hdhs(say,'hello js!');//hello js!

2: 偏函数: 简化了声明时的参数声明
例如:

  1. let mult=function(a=1,b=2){
  2. return function(c,d){
  3. return a*b*c*d;
  4. };
  5. };
  6. let result = mult()(3,4);
  7. console.log(result);//24

3:柯里化:把一个多元参数的函数变成多个一元参数的函数
例如:

  1. let mult = function(a){
  2. return function(b){
  3. return function(c){
  4. return function(d){
  5. return a*b*c*d;
  6. };
  7. };
  8. };
  9. };
  10. let result = mult(1)(2)(3)(4);
  11. console.log(result);//24

4:纯函数:完全独立于调用上下文,返回值只能受到传入的参数影响
例如:

  1. //这不是一个纯函数
  2. function getTimes(){
  3. return new Date().getHours();
  4. }
  5. console.log(getTimes());//返回当前小时
  1. //这就是一个纯纯的函数
  2. function div(valueA,valueB){
  3. console.log(valueA*valueB);
  4. };
  5. div(2,3);//6
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议