ECMAScript-函数的参数

一、ECMAScript-函数的参数
1. 函数默认值
function foo(x, y) { 
    y = y || 'es' // 判断y是否传值
    console.log(x,y)
}
foo('hello', 'world')
foo('hello', 0) // 这样就存在问题 其实本意是hello 0

// es6中场景适配 
// 使用默认值的方式
function foo(x, y = 'world') {
    console.log(x,y) 
}
foo('hello')
foo('hello',0) // hello 0

// 函数内部的参数,不可与形参再次同名
function foo(x) {
  let x = 1 // 这种就是存在问题的
}

// 函数参数的名称也是不可重复
function foo(x, x, y) { // 这种也是不被允许的
  
}
// 参数的默认值在参数最后
function foo(x, x, y = 5) {
  
}
2. 与解构赋值的结合
// 函数参数解构赋值的时候,对应的结构应该相同
function foo({x, y = 5}){
    console.log(x,y)
}
foo({}) // undefined 5
foo() // Cannot read property 'x' of undefined
foo({x: 3, y: 6}) // 3 6
 
function ajax(url, {
  body = '',
  method = 'GET',
  headers = {}
}){
  console.log(method)
}
ajax('http://www.baidu.com', {method: 'POST'}) // POST
3. length属性
// 函数的length返回的是没有指定默认值的参数个数
function foo(x, y, z = 6){}
console.log(foo.length)
4. 参数的作用域
let x = 1;
function foo(x, y = x) {
    console.log(y) 
}
foo(2) // 2

let x = 1;
function foo(y = x) {
  	let x = 2
    console.log(y) 
}
foo() // 1

function foo(y = x) {
    console.log(y) 
}
foo() // x is not defined
5. 函数的name属性
function foo(){}
console.log(foo.name) // foo

console.log(new Function().name) // anonymous

function foo(x, y){
  console.log(this, x, y)
}
foo.bind({name: 'zhangsan'})(1,2)  // bind 本身不会执行foo函数,bind只是改变指向
// 或者
foo.bind({name: 'zhangsan'}, 1, 2)() 
console.log(foo.bind({}).name) // bound foo
console.log((function(){}).bind({}).name) // bound
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值