Javascript函数

什么是函数?

函数就是完成某个功能的一组语句,函数由关键字 function 函数名加一组参数定义

函数在定义后可以被重复调用,通常将常用的功能写成一个函数

利用函数可以使代码的组织结构更多清晰

function say_hello (name, msg){
      alert("hello"+ name + ":"+ msg);
}

say_hello(“david”, “how are you today?”);


如何定义一个函数?

定义函数的方法有很多种:
1、函数声明
function sum1(n1,n2)
{
    console.log(n1+n2);
}
sum1(1,2);  //3

2、函数表达式(存储在变量中)
var sum2 = function(n1,n2)
{
    console.log(n1+n2);
}

sum2(1,2);    //3


函数重构

function demo()
{
    console.log('js函数');
}

demo();        

function demo()
{
    console.log('覆盖的js函数');
}

demo();


使用 return 语句从函数返回值

function sum (num1, num2){
   return num1 + num2;
}

var s = sum(1, 2);
alert(s);

注意:
位于return 语句之后的任何代码都永远不会执行!
在JavaScript中,不一定要指定返回值!

函数参数设置默认值

function sum (a=1, b=2)
{
  return a + b;
}

console.log(sum());
console.log(sum(10));
console.log(sum(10,20));

函数参数总数获取

function demo(a,b,c,d)
{
    return 1;
}

console.log(demo.length);

模板字符串

let demo = 'ES6';
let str = `Hello ${demo}`;
console.log(str);

箭头函数

var f = v => v;
//等价于
var f = function(a){
 return a;
}

f(1);  //1
console.log(f(1))
  • 函数体中的 this 对象
function fn(){
  setTimeout(()=>{
    // 定义时,this 绑定的是 fn 中的 this 对象
    console.log(this.a);
  },0)
}
var a = 20;
// fn 的 this 对象为 {a: 19}
fn.call({a: 18});  // 18
  • 不定参数
function f(...values){
    console.log(values.length);
}
f(1,2);      //2
f(1,2,3,4);  //4

什么是全局变量?什么是局部变量?

  1. 变量既可以是全局,也可以是局部的
  2. 全局变量:可以在脚本中的任何位置被引用,一旦你在某个脚本里声明了全局变量,你就可以在这个脚本的任何位置(包括函数内部)引用它,全局变量的作用域是整个脚本;
  3. 局部变量:只存在于对它做出声明的函数内部,在函数的外部无法相用它,局部变量的作用域仅限于函数内部
var global = "global";//全局变量
function test()
{
  var local="local"; //局部变量
  global2="global2"; //全局变量
}

在函数外用var声明的变量一般就是全局变量
定义在函数当中,但是没有用var声明的是全局变量
定义在函数当中,用var声明的是局部变量

递归函数

递归函数:在函数里面调用自己 从而实现循环的效果

function test(num)
{
  if(num == 0 || num == 1){
        return 1;
  }
  return num*test(num-1);
}
document.write("5的阶乘为:"+test(5));

回调函数

在js当中我们可能会常常见到一种函数叫做回调函数,回调函数一般在执行完一些操作后所调用的函数.

function A(callback) {
    callback('stuff', 'goes', 'here');
}

function B(a, b, c) {
    console.log(a + " " + b + " " + c);
}

A(B);   //B就是我们的回调函数


闭包函数

闭包就是一个函数能够访问其函数外部作用域中的变量。
简单来说闭包就是定义在函数体内部的函数。

闭包的三大特点为:
    1、函数嵌套函数
    2、内部函数可以访问外部函数的变量
    3、参数和变量不会被回收。

代码结构:
function test() 
{
    var a = 1;
    return function () 
    {
        console.log(a);
    }
}
var demo = test();
demo();

立即调用的函数表达式

(function(){ /* code */ })();

这种写法都是以圆括号开头,引擎就会认为后面跟的是一个表示式,而不是函数定义。
所以就避免了错误,这就叫做“立即调用的函数表达式”

var i = function(){ return 10; }();
console.log(i)

eval

eval 接受一个字符串类型的参数,将这个字符串作为代码在上下文环境中执行,并返回执行的结果

var i = 1;
eval("i = i + 1");
eval("alert(i);");
powered by GitbookEdit Time: 2023-04-08 10:28:32