Blogger Information
Blog 37
fans 1
comment 0
visits 32627
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
js函数的基本规范和特征
Jason Pu?
Original
797 people have browsed it

一:常量与变量

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
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post