js中函数需要注意地方的个人总结

2019-10-08  本文已影响0人  光年之外iii

1.js中函数的声明有声明提升的过程,而函数表达式必须等到所在的代码行时,才会进行解析,例:

函数声明:

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

    function sum(num1,num2){

        return num1 + num2;

    }

此时,函数虽写在打印的值之后,但因为声明提升,这时的console.log可以打印出函数的值,即30;

函数表达式:

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

var a=function sum1(num3,num4){

    return  num3+num4

}

用函数表达式声明时,变量只是声明提前,并不提前值,所以此时的代码,会是报错的。

tips:函数默认的返回值为undefined,需要返回指定的值需要return语句。


2.函数中参数的类型:

(1)函数中的参数分为形参和实参两种,形参就是形式上的参数,只提供便利,不是必须写;实参则为调用有函数时传入有值的参数。

个人理解:可将形参和实参比喻为方程式中的未知数和已知的解答,

若形参为x+y=10,  那么实参便是4和6,或7和3.  实参拥有明确的值,而形参中,不管写什么,都只提供观看上的便利,并没有实际作用。

(2)参数的类型arguments对象:对象的长度是由实参决定的,不是由形参决定,length属性,也代表着实参传入了几个参数。

3.函数没有重载

function addSomeNumber(num){

return num + 100;

}

function addSomeNumber(num){

return num + 200;

}

console.log(addSomeNumber(100));

输出的值为300,可见第二个函数将第一个函数给覆盖了。

4.全局变量和局部变量

局部变量:

 在其内边定义的变量成为局部变量,

  只能在内部访问,

  局部作用域:起作用的区域.

全局变量: 在函数体外,整个执行环境为window下定义的变量成为全局变量 可在全局及局部均可访问到全局作用域:起作用的区域.

var a = 30;

function aa(){

a = 20;

console.log(a)

}

console.log(a);

函数中的console.log(a)会输出undefined,因为全局变量中的a=30,可以进入函数中,而一个变量不能同时拥有两个值。

而函数外的console.log(a)会输出30,在函数中的变量只会在函数中取值,不能到全局进行取值,因此局部变量中的值20对全局没有影响。

上一篇 下一篇

猜你喜欢

热点阅读