JavaScript函数补充

函数的默认参数

JS函数参数的默认值都是undefined,写默认参数的方法有两种,代码如下:
以前常用方法(ES5):

function sum(a,b){
    b=(typeof b !== 'undefined') ? b:1;
    return a*b;
}
sum(5,2);//10
sum(5);//5

现在可用方法:

function sum(a,b=1){
    return a*b;
}
sum(5,2);//10
sum(5);//5

以上两种方法都是将b的默认值设置为1,当传入形参为空或者没有传入形参时,默认b的值为1
注:位于默认参数后非默认参数,参数设置仍然是从左往右,覆盖默认参数,即使参数没有默认值
示例:

function f(x = 1, y) { 
  return [x, y]; 
}

f(); // [1, undefined]
f(2); // [2, undefined]

let定义

起源:let的出现是为了解决ES6之前老版本标准中的两个问题

  • 在JavaScript中如果定义了同名的变量,那么后定义的变量会覆盖前面定义的变量
  • 在老版本标准中JavaScript可以先使用变量再定义,并且不会报错
    let不能定义同名变量,一旦定义在ES6中就会报错,而且let不能先调用再定义

全局变量

定义:在整个页面任何地方都可以调用的变量就是全局变量
写法:

  • 写在JavaScript的{}之外的变量
  • 在块级作用域中用var定义的变量
  • 在局部作用于或者块级作用域中省略var或者let的变量

局部变量

定义:只能在固定代码块中被使用的变量,外部不能使用局部作用域中定义的局部变量
写法:在函数内部,写在JavaScript函数后面的{}中的变量就是局部变量
注:局部变量优先于全局变量

块级变量

定义:任何一对{}中的代码集都是属于一个块,在块级作用域中使用let声明的变量
写法:在{}中使用let声明

垃圾回收机制

  • 在JavaScript的函数中,每一个局部变量都会占着一定的空间,用来存储他们的值,一旦函数执行结束,局部变量就没有存在的意义了,所以JavaScript就会通过垃圾回收机制来销毁这些局部变量,达到自动释放他们所占的内存空间的目的,减小浏览器的运行负担
  • 如果想保留局部变量的值,可以采用return返回或者利用全局变量来保存,所以如果一个函数中的变量是局部变量而运行完之后没有return保存数据,当网页要输出的时候就会出现没有这个变量的情况,导致浏览器报错
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容