您好,欢迎来到百家汽车网。
搜索
您的当前位置:首页javascript(3)函数

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;

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baijiahaobaidu.com 版权所有 湘ICP备2023023988号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务