关于react.js:ES6-常用语法介绍

48次阅读

共计 2693 个字符,预计需要花费 7 分钟才能阅读完成。

咱们先来理解一些 ES6 语法。好多小伙伴就是不重视根底,感觉这有什么难的,多写点我的项目,记住写法就行了,前面天然就会了。其实这种想法是谬误的,要想代码写法标准,bug 少及排错能力强,必须把根底把握牢固。

1、let 与 const

ES2015(ES6) 新增 2 个 JavaScript 关键字: let 和 const
**
let 申明的变量只在所在的代码块中失效。举例说明如下:

    function getShopList() {
        let shopCount = 10;
        console.log('shopCount1', shopCount); // 正确打印出 10
    }
    getShopList();
    console.log('shopCount2', shopCount); // 报错,即 shopCount not defined

在控制台打印得:

所以,let 申明的变量只在所在的代码块中失效。

const 申明一个只读的常量,一旦申明,常量的值就不能扭转。举例说明如下:

    function getShopList() {
        const shopCount = 10;
        shopCount = 20; // 从新赋值,就会报错
        console.log('shopCount', shopCount);
    }
    getShopList();

在控制台打印得:

反思点:
爱动脑筋的小伙伴可能会问,如果用 const 申明初始化一个数组或者对象时,为何能扭转它的值?

    function getShopList() {const shopCount = [10];
        shopCount.push(30);
        console.log('shopCount', shopCount);
    }
    getShopList();

在控制台打印得:

总结:
const 其实保障的不是变量的值不变,而是保障变量指向的内存地址所保留的数据不容许扭转。然而,简略类型和复合类型保留值的形式是不一样的。对于简略类型(数值 number、字符串 string、布尔值 boolean), 它的值就保留在变量指向的那个内存地址,因而 const 申明的简略类型变量等同于常量;而简单类型(对象 object,数组 array,函数 function),变量指向的内存地址其实是保留了一个指向理论数据的指针,指针是能够挪动的,所以变量的值也是能够扭转的。
其实下面原理不太了解的小伙伴,也不必太过纠结,咱们只须要记住,罕用的数值和字符串用 const 申明初始化后,是不能够从新赋值的;而数组和对象用 const 申明初始化后,容许扭转其值就 ok 了!

面试题问答:
咱们在面试口试过程中,有时候会遇到考查 const 与 let 关键字的其余知识点?你们遇到过吗,一起持续往下看

b() // 今天预报有大雨!console.log(a) // undefined

var a = '今天天气不错!'

function b() {console.log('今天预报有大雨!')
}

下面输入的后果想必大家都晓得了,之所以 变量 a 和 b 函数可能打印出后果,这就是变量和函数晋升的起因。通常状况下,能够了解为将申明的代码移动了顶部。然而更精确的说,js 在生成执行环境时,有两个阶段。第一个阶段是创立阶段,js 会将变量和函数晋升,并在存到开拓好的内存中。所以在第二代码执行阶段,咱们能够间接提前应用,而不会报错。

好了,理解完起因之后,咱们一起看上面的面试题:

    function fn() {
        const k = 1;
        fn1();
        function fn1() {console.log('k1', k);  // k1 1
        }
    }
    const k = 2;
    fn();
    console.log('k2', k); // k2 2

通过以上的解说,想必这道面试题对大家来说也是小菜一碟了。我也不多唠叨了!


2、解构赋值

咱们之前必定很常见上面赋值:

const girl = {name:"Tom" , age:18};
let boy = {name:"Jim" , age:24};

 
明天咱们聊的是:将他们反过来赋值

const {name:"Tom" , age:18} = girl;
let {name:"Jim" , age:24} = boy;

这样的就能够拿到相应的 name 与 age 值了。下面的用法仍然实用于数组。

解析赋值很多用于函数组件中,接下来,就让咱们一起看看吧

// 这是不应用解析赋值的写法
handlePersonInfo = (props) =>{return <div> 你好!{props.name}</div>    
}


// 应用解析赋值
handlePersonInfo = ({name}) =>{return <div> 你好!{name}</div>     
}

另外,

属性开展是 JSX 中的一个新个性
咱们尽量少写文字,多代码展现,这样大家能很快把握并正确应用。先举个例子:

let props = {};
props.userList = a;
props.roleList = b;

const component = <Component {...props} />
// 这里的属性开展就是传入对象的属性会被复制到组件内
// 相当于 const component = <Component userList ={a} roleList ={b}>

这样写是不是不便很多了呢。

一、笼罩个性

既然它应用起来如此不便,有哪些留神点呢?
它能被屡次应用,也能够和其它属性一起用。留神程序很重要,前面的会笼罩掉后面的。

let props = {name:"Tom"};
const component = <Component name={"Jim"} {...props} />
console.log(conponent.props.name); // "Tom"

二、合并个性

在一些场合下,咱们须要将两个对象数组合并成一个对象数组,如何应用属性开展来操作呢?

const a = {name:"Tome"};
const b = {age:18};

const userInfo = {...a, ...b};   // 合并之后: userInfo = {name:"Tom", age:18}

三、拆散个性

如果心愿将某个值从对象数组中分离出来,嘿嘿,拆散个性就能够帮到你了

const arrObject = {name:"Tom", age:18, school:"zhongshan"};

const {age, ...a} = arrObject;

// 此时,a = {name:"Tom", school:"zhongshan"}

3、Promise 对象

它是异步编程的一种解决方案。咱们在这不去过多的理解它的历史及刻板概念形容,比方 Promise 对象状态:pending、fulfilled、rejected 及它们之间如何互相转换的。
咱们终极目标是帮忙小伙伴们疾速把握并应用它,让学习不再有压力。

正文完
 0