第二话:变量声明

作者: 小猫吃鱼1990 | 来源:发表于2018-02-01 11:01 被阅读11次

var声明

声明的为全局变量。

for(var i = 0; i < 10; i++) {

    setTimeout(() => {

        console.log(i);

    }, 100 * i)

}

结果:10,10,10,。。。。。。(10个)

let声明

声明的变量为局部变量,作用域为块作用域。

for(let i = 0; i < 10; i++) {

    setTimeout(() => {

        console.log(i);

    }, 100 * i)

}

结果: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

const声明

const和let拥有相同的作用域规则,只是const不能被赋值。其实也只是不能整体赋值,给单独的元素赋值是合法的。

const all = {

    name: 'xiaoming',

    age: 10,

};

// error

all = {

    name: 'honghong',

    age: 18,

};

// right

all.name = 'honghong';

all.age++;

let vs const

使用原则:最小特权原则,既所有变量的定义,除了你计划去修改的,都应该使用const去定义。

解构

数组解构

let [ 1, 2 ] = input;

最简单的结构:

let [ first, second ] = input;

console.log(first); // 1

console.log(second); // 2

作用于函数参数:

function f([ first, second ]: [ number, number ] ) {

    console.log(first, second); 

}

f(input); // 1, 2

可以在数组里使用...语法创建剩余变量:

let [ first, second, ...rest ] = [ 1, 2, 3, 4 ];

console.log(first, second); // 1, 2

console.log(rest);  // [ 3, 4 ]

你可以忽略你不关心的元素:

let [ first ] = [ 1, 2 ,3, 4 ];

console.log(first); // 1

let [ , second, , fourth ] = [ 1, 2, 3, 4 ];

console.log(second, fourth); // 2, 4

对象解构

let person = {

    name: 'xiaoxiao',

    school: 'beijing',

    age: 12,

};

最简单的形式:

let { name } = person; // 'xiaoxiao'

let { name, ...rest} = person;

console.log(name); // 'xiaoxiao'

console.log(rest); // { school: 'beijing', age: 12 }

属性重命名:新名称写在冒号后面

let { name: newName, school: newSchool } = person;

默认值:

function keep(ol: { a: number, b?: number }) {

    let { a, b = 1002 } = ol;

} // 当没有传入b参数时,b变量使用默认值1002

展开

数组展开:

let first = [ 1, 2 ];

let second = [ 3, 4 ];

let third = [ ...first, ...second, 5]; // [ 1, 2, 3, 4, 5 ]

对象展开:

let first = {

    name: 'apple',

    color: 'red',

};

let second = {

    price: 4,

    size: 'big',

};

let all = { ...first, ...second, color: 'yellow' }; // { name: 'apple', color: 'yellow', price: 4, size: 'big' }

注意:当展开一个对象实例时,会丢失其方法。

相关文章

  • 第二话:变量声明

    var声明 声明的为全局变量。 for(var i = 0; i < 10; i++) { setTimeou...

  • 许世伟的Go语言基础 第二章总结

    第2章 顺序编程 2.1 变量 变量声明 变量声明的类型信息放在变量之后,放在数组的中括号之后,作返回值类型放在方...

  • c++ primer 阅读 day3

    第2张 变量和基本类型 2.2.2 变量声明和定义的关系 声明(declaration) 使得名字为程序所知定义(...

  • 变量 声明

    let:块儿级作用域,同一作用域内,不许声明同一个变量,不能在函数内部重新声明参数,允许块儿级作用域随意嵌套ES6...

  • $ 变量声明

    声明变量的符号“$”变量名称赋予变量的值 声明了变量之后,就可以在作用域内直接调用了。

  • 变量声明

    我们要使用盒子装东西,是不是先要找到盒子,那在编程中,这个过程叫声明变量,找盒子的动作,如何表示: 声明变量语法:...

  • 变量声明

    1、变量声明 上面这段代码声明了一个类型为string的变量name。对于string类型的变量,声明之后没有赋值...

  • 变量声明

    var声明 主要特点:var是函数作用域,只针对函数声明可以多次声明同一个变量不会报错捕获变量怪异之处 let声明...

  • 变量声明

    es6声明变量的六种方法: var,function,let,const, class, import let...

  • 声明变量

    使用var声明的变量会自动被添加到最接近的环境中。在函数内部,最接近的环境就是函数的局部环境;在with语句...

网友评论

    本文标题:第二话:变量声明

    本文链接:https://www.haomeiwen.com/subject/mqelzxtx.html