一,定義變數let(類似var) 在js一直有一個bug是var: 1、var 聲明的變數會有變數提升 2、var 沒有塊級作用域 3、var 可以多次重覆定義一個變數,後面的變數替換前面變數 新的定義變數let: 1、let聲明的變數不會有變數提升,只有在前面定義了在後面才能用 2、let存在塊級 ...
一,定義變數let(類似var)
在js一直有一個bug是var:
1、var 聲明的變數會有變數提升
console.log(name); //jhon var 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); //jjjj obj.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]):返回布爾值,用於判斷字元串是否以某個字元開頭
var bool2 = str.startsWith('hello'); console.log(bool2); //true
//給這個方法傳入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));