(精华)2020年7月4日 JavaScript高级篇 ES6(函数扩展)
【摘要】
函数参数的默认值
function Person(name = '张三',age=18){
this.name = name
this.age = age
}
let person1 =...
函数参数的默认值
function Person(name = '张三',age=18){
this.name = name
this.age = age
}
let person1 = new Person()
console.log(person1);
// 好处
// 1 阅读代码清晰
// 2 有利于代买维护 有利于封装代码
// 注意:有默认参数声明 内部不能用let const声明
function fn(x,y="123"){
let x = 1;
}
fn(1)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
与结构赋值结合的使用
function fn({x,y=5}){
console.log(x);
console.log(y);
}
fn({}) // undefined 5
fn({x:1})
fn({x:1,y:9})
function getFn([x=3,y=5]){
console.log(x);
console.log(y);
}
getFn([1])
function getFn([x=3,y=5] = [1]){
console.log(x);
console.log(y);
}
getFn()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
参数默认值会形成单独的作用域
// 函数的参数会形成一个单独的作用域
// 等到初始结束这个作用域就会消失
function f(x,y=x){
console.log(y);
}
f(2)
//相当于形成了一个单独的块级作用域
{
let x = 2
y = x
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
参数展开运算符打包
// 写一个方法计算 1,2,3相加的结果 用到for...of 循环
// 第一种方法
function add(){
// console.log(arguments);
// ... Array.from()
let sum = 0
for (let i of arguments){
console.log(i);
sum += i
}
return sum
}
console.log(add(1,2,3));
// 第二种方法 参数展开运算符打包
function add1(...values){
console.log(values);
let sum = 0
for (let i of values){
console.log(i);
sum += i
}
return sum
}
console.log(add1(1,2,3));
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
函数内部严格模式的改变
// es6 函数参数指定了默认值 解构赋值 扩展运算符... 内部就不能用严格模式
// 因为我们的参数此时也会形成一个作用域
// function get(a,b = a){
// 'use strict'
// }
// get()
// 方法一
'use strict'
function get(a,b = a){
}
get()
// 方法二
const doSome = (function(){
'use strict'
return function(a = 2){
return 2
}
}())
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。
原文链接:codeboy.blog.csdn.net/article/details/107131594
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)