JavaScript基础笔记2(函数)

函数:

//定义函数的两种方式
function func1() {          //函数声明
	console.log("qwq");
}

let func1 = function() {    //函数定义
	console.log("qwq");
};
//两者有细微差异,function为函数声明,let为函数定义。
//JavaScript引擎会先把全局函数声明提前(类似变量提升),这阶段为初始化阶段
//而函数定义只会在运行到此行才会执行

//由于let相当于语句,与函数声明或者C语言的函数定义相比,函数大括号后面加多加了一个分号。其实可以不加,但是建议加上。

function A() { return B(); }
function B() { return A(); }
console.log( A() );   //此例没有语法错误,但是运行时会爆栈
//用函数定义和函数声明,都不会在A函数中出现B函数未定义的报错,但是调用函数时必须调用已经定义或有全局声明的函数,否则报错

JavaScript中的函数可以当做一种特殊的值来处理,函数可以当做变量名将内容转移到另一个变量里。

console.log( func1() ); //qwq   undefined   如果没有return值,函数本身的返回值就是undefined
console.log( func );    //ƒ func1() {  console.log("qwq");  }     如果是输出变量名会把函数内容输出出来

let func2 = func1;
func2();   // qwq       函数名可以交换

函数名也可以当参数传入另一个函数中,JavaScript教程中的函数嵌套例子:

function ask(question, yes, no) {     //这里传进去的yes和no是两个函数
  if (confirm(question)) yes();      //confirm是弹出对话框,让用户选择yes或no,返回true和false的函数
  else no();
}

ask(
  "Do you agree?",
  function() { alert("You agreed."); },
  function() { alert("You canceled the execution."); }    //正常工作
);

ask(
  "Do you agree?",
  function() { alert("You agreed."); },
  "qwq"    //如果点yes程序正常工作,如果点no程序会中断,以至于后面的QAQ也不会输出
);
console.log("QAQ");

箭头函数

函数其实有第三种表达形式,叫箭头函数:

let func = (arg1, arg2, ..., argN) => expression;
//  “(参数)=> 语句”  是箭头函数的主要形式,若为单个语句且有具体的返回值,那么也可以作为return值来用
//如果只有一个参数,可以省略括号
//如果没有参数,括号内可以为空
//其作用相当于下面定义。
let func = function(arg1, arg2, ..., argN) {
  return expression;
};

console.log(typeof (()=>"qwq") );   //function   说明本质上也是函数的一种形式

//一个例子:
let ask = ()=>alert("qwq");
console.log(typeof ask());         //undefined
//分析:ask本身是函数,alert本身也是函数,但是alert()的返回值是undefined,ask()的返回值即为=>后面的值应该也是undefined,因此输出类型也是undefined

在JavaScript中,函数作为一种很自由的数据类型,可以在代码的任意位置创建:

let age = prompt("What is your age?", 18);

let welcome = (age < 18) ?
  () => alert('Hello!') :
  () => alert("Greetings!");      //在三目运算符中创建箭头函数

welcome();

当函数有多条语句但是需要具体的返回值时,可以用花括号括起来加return:

let add = (a,b) => {
  let res = a + b;
  return res;
};

alert( add(1, 2) ); // 3

由于箭头函数的简洁性,在JavaScript中有比较高的应用价值。

posted @ 2023-07-26 16:12  maple276  阅读(10)  评论(0编辑  收藏  举报