首頁  >  文章  >  web前端  >  ES6的文法詳解

ES6的文法詳解

巴扎黑
巴扎黑原創
2017-09-11 11:48:323570瀏覽

一,定義變數let(類似var)

在js一直有一個bug是var:

1、var 宣告的變數會有變數提升


console.log(name);  //jhonvar name = 'jhon';

2、var 沒有區塊級作用域


var name2 = 'jjjon';
{    var name2 = 'tom';
}
console.log(name2);     //tom

3、var 可以重複定義一個變量,後面的變數取代前面變數


var name3 = 'jond';var age = 18;var name3 = 19;var name3 = 'rose';
console.log(name3);     //rose

新的定義變數let:

#1、let宣告的變數不會有變數提升,只有在前面定義了在後面才能用


console.log(name4);     //报错let name4 = '1112';

2、let存在區塊級作用域


let name5 = '222';
{
    let name5 = ' ttt';
}
console.log(name5);  //222

3、let不能重複定義一個變數


let name6 = 'aa';
let name6 = 'bb';    //报错console.log(name6);  //aa

二,const 宣告一個常數

常數:指的是不會改變的資料

1、值不能再改變 


const pi = 3.01415;//pi = 3;     //报错
    {
        const arr = [5,6,8,9,];
        arr.push(7);
        console.log(arr);  //(5) [5, 6, 8, 9, 7]
        arr = 10;     //值不能改变,否则报错
    }

 

2、常數具有區塊級作用域


#
{
    const ban = "vin";
}
console.log(ban);     //报错

3、沒有變數提升,先宣告後再使用


console.log(ba);     //报错const ba = 'liu';

4、不能宣告同名的常數

5、一定要賦初始值,否則報錯


const bb;     //报错

6、如果宣告的是對象,物件的位址不能改變,但是可以改變其內部的屬性


const obj = {
    na:"jjjj",
    age:20};
console.log(obj.na);  //jjjjobj.na = "ccs";
console.log(obj.na);  //ccs

 

 例如:套用場景,固定的位址就可以用常數


// var path = 1122// var path = '1243';const path = 'path';
console.log(path);  //path

 

三,字串的擴充

1、判斷字串"hello word"是否存在"word"


#
var str = 'hello word';var result = str.indexOf('word');
console.log(result);  //6

 2,ES6提供includes():傳回布林值,用來判斷字串是否包含某些字元


var bool = str.includes('word');
console.log(bool);    //true

3,startsWith(str[,num]):傳回布林值,用於判斷字串是否以某個字元開頭


 bool2 = str.startsWith('hello'

//給這個方法傳入2個參數
var bool3 = str.startsWith('word',6);
console.log(bool3);  //true

#4,endsWith(str[,num]):傳回布林值,用於判斷字串是否以某些字元結尾


var bool4 = str.endsWith('d');
console.log(bool4);  //true//给这个方法传入两个参数var bool5 = str.endsWith('o',7);
console.log(bool5);  //false

5,repeat(num):傳入數字,這個方法將字串重複數字對應次數


var str322= '我爱我家,\n';
console.log(str322.repeat(3));        //3行 我爱我家,

 

四, 5.0模板語法:`模板字串`


var obj33 = {
    name:'zhuzhu',
    age:18,
    sex:'男',
    hobby:'女',
    veight:120,
    height:180};// 字符串拼接方法var str4 = '大家好,我叫:'+obj33.name+',今年'+obj33.age+',性别'+obj33.sex+',爱好'+obj33.hobby+'。';
console.log(str4);        //大家好,我叫:zhuzhu,今年18,性别男,爱好女。// 但是字符串的拼接太麻烦了,有没有简单的方法来解决这个问题呢,有的,模板字符串就可以了var temp111 = `大家好,我叫${obj33.name},今年${obj33.age},性别${obj33.sex},爱好${obj33.hobby}`;
console.log(temp111);    //大家好,我叫zhuzhu,今年18,性别男,爱好女//1,可以是变量let name8 = "美女";
let temp22 = `我叫${name8}`;
console.log(temp22);    //我叫美女// 2,可以是方法function getName(){    return "宝宝";
}
let temp3 = `我叫${getName()}`;
console.log(temp3);        //我叫宝宝// 3,可以是表达式let aa = 1 ;
let bb = 2;
let temp4 = `a + b=${aa+bb}`;
console.log(temp4);        //a + b=3

 

五,6.0箭頭函數:( )=>{}


// 最原始函数var arr = [2,3,5,7];
 $(arr).each(function(index,item){
   console.log(item);
 }); // 箭头函数改造// 改造一:匿名函数中的funtion关键字我们可以省略,参数与方法体之间中=>$(arr).each((index,item)=>{console.log(item);})
 // 改造二:如果方法体中的代码只有一句我们可以去掉{},并且代码结尾的分号要去掉$(arr).each((index,item) =>console.log(item));

以上是ES6的文法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn