javascript(3)函数

arguments
function函数自带一个关键字arguments,只在函数内部起作用,永远指向当前函数的调用者传入的所有参数,用法类似于数组。
函数不定义任何参数,还是可以拿到参数的个数和值

function foo(x) {
    console.log('x = ' + x); // 10
    for (var i=0; i<arguments.length; i++) {//参数个数
        console.log('arg ' + i + ' = ' + arguments[i]); // 10, 20, 30
    }
}
foo(10, 20, 30);

rest参数
function foo(a, b, …rest),rest参数写在最后,前面有…,将参数以数组的形式存储。与数组的使用方法一致。

变量作用域
  • 函数体内部声明的变量函数体外不可以使用。
  • 函数体内部声明的变量与其他函数声明的变量互相独立,互不干扰。
  • 函数嵌套时,内部函数可以调用外部函数的变量,外部不可以访问内部。
  • JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。
  • 函数会将所有变量的声明提升到顶部,但不会提升变量的赋值。
    全局作用域
    JavaScript默认的全局对象window
    顶层函数的定义和全局作用域的变量都是window的属性。
    把自己的所有变量和函数全部绑定到一个全局变量中,减少在不同js文件中的命名冲突。
    局部变量
    let替代var可以申明一个块级作用域的变量,比如在for循环中。
    ES6标准引入了新的关键字const来定义常量,const与let都具有块级作用域。
解构赋值

数组解构赋值

//x = hello, y = JavaScript, z = ES6
var [x, y, z] = ['hello', 'JavaScript', 'ES6'];
//有层次嵌套的赋值,嵌套层次和位置要保持一致
let [x, [y, z]] = ['hello', ['JavaScript', 'ES6']];
//忽略某些值进行赋值
let [, , z] = ['hello', 'JavaScript', 'ES6']; 

对象解构赋值

var person = {
    name: '小明',
    age: 20,
    gender: 'male',
    passport: 'G-12345678',
    school: 'No.4 middle school'
    address: {
        city: 'Beijing',
        street: 'No.1 Road',
        zipcode: '100001'
    }
};
var {name, age, passport} = person;
//保证嵌套层次一致,对应的属性不存在,变量将被赋值为undefined
//passport:id语法是将变量id获得passport属性
var {name,passport:id, address: {city, zip}} = person;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值