javascript中函数命名的三种方式

2019-06-02  本文已影响0人  那麽快樂

函数

//函数声明式:

function 函数名() {

    //函数体 ,功能块

}

//注意:

// function: 定义函数的关键字( 必须小写)

// 函数名: 自定义的一个名字( 调用时必须与函数名称相同的大小写调用函数)

// 函数体: 要封装的某段代码, 它可以完成某个特定的功能

// 特点: 函数声明提升, 自动提升到顶端

// 函数声明可以随时随地调用。

//函数表达式:

var min = function() {

    //函数体

}

// 特点: 定义之后调用, 定义之前调用, 报错。

//构造函数的方式声明:

var fn = new Function()

console.log(fn)

function Fun() {

}

var fn = new Fun()

    // 函数作用域:

    // 全局变量: 不在任何函数内定义的变量就是全局变量。 实际上, JavaScript默认有一个全局对象window, 全局作用域的变量实际上被绑定到window的一个属性: 因此, 直接访问全局变量global和访问window.global是完全一样的。

    // 局部变量:(函数内var 声明的变量) 只能被函数自身读取( 该变量的作用域是局部的)。

// 变量的规则:( 变量的作用域)

// 1) 如果一个变量在函数体内部申明, 则该变量的作用域为整个函数体, 在函数体外不可引用该变量:

eg: function fn() {

    var x = 1;

}

x = x + 2; // 报错 找不到函数体内的变量

// 2) 如果两个不同的函数各自申明了同一个变量, 那么该变量只在各自的函数体内起作用。 各自为政互补干扰。

eg: function fn1() {

    var x = 1;

    console.log(x)

}

fn1() //1

function fn2() {

    var x = 2;

    console.log(x)

}

fn2() //2

    // 3) 函数外部的变量就算是和函数内部的变量名称相同, 也是两个变量, 没有任何关系, 彼此不发生影响

var a = 20

function fn() {

    var a = 5;

    console.log(a) //5

}

console.log(a) //20

fn()

    // 4) 函数内部的变量, 没有用var时, 会逐层向上查找

    //     (如果把值赋给尚未声明的变量, 是隐式声明, 不会变量提升, 直接为全局变量)

eg: var a = 2

function fn() {

    console.log(a) //undefiend

    var a = 1

    console.log(a) //1  //就近原则 在函数体寻找

}

console.log(a) //2   读取函数外a

fn();

console.log(a) //2 调用后函数声明 权重比 var高 所以被a=2覆盖      

    // 作用域链:变量查找的范围,从函数自身的范围开始找,自身没有

    // 找父级,一直找到document为止,找不到结果是undefined.

    // 函数同名的话,后写的函数覆盖先写的函数,这叫函数 没有重载。

    // 注意:js没有重载

function add() {

    console.log(1)

}

function add() {

    console.log(2)

}

add() //2

    //同名函数会被覆盖

    // 遇到连等赋值,等号前有优先提取特点,等号后的变量则看做全局变量 eg: var a=b=5 a有生名提升 b为全局变量

上一篇下一篇

猜你喜欢

热点阅读