JS高級(jí)-01

箭頭函數(shù)

// 箭頭函數(shù)
const func3 = () => {
console.log("func3");
};
func3();

箭頭函數(shù)省略寫(xiě)法

小括號(hào)省略

// 箭頭函數(shù)傳參
// 如果只傳一個(gè)參數(shù)锦庸,小括號(hào)可以省略。const func2 a => {console.log(a);};
// 如果不傳參數(shù) 或者傳多個(gè)參數(shù),小括號(hào)不能省略

const func2 = (a, b) => {
console.log(a, b);
};

//小括號(hào)可以省略
const func3 = a => {
console.log(a);
};
//調(diào)用
func2("2", "3");
func3("456");

大括號(hào)省略

const func1 = () => {
return 123;
};
console.log(func1());

// 簡(jiǎn)潔返回值的寫(xiě)法,如果函數(shù)代碼只有一行,那么大括號(hào)可以省略,同時(shí),這一行代碼運(yùn)行結(jié)果也會(huì)被直接返回
// 省略大括號(hào),建議代碼不要換行
const func2 = (a) => a + 1;
const num = func2(2);
console.log(num);

const func3 = (a) => console.log(a);
func3(123);

// const func4 = a => a + 1;
// const num2 = func2(5);
// console.log(num2);    //結(jié)果6

返回對(duì)象

箭頭函數(shù)返回值為對(duì)象時(shí),如果要省略大括號(hào),那么對(duì)象得用小括號(hào)包起來(lái)

const func1 = () => 123;
const func2 = () => true;
const func3 = () => "哈哈哈";
const func4 = () => [1, 2, 3, 4, 5];
// 調(diào)用并輸出
console.log(func1());
console.log(func2());
console.log(func3());
console.log(func4());

// 箭頭函數(shù)如果在省略大括號(hào)時(shí),返回值是對(duì)象就得用()小括號(hào)包起來(lái)
const func5 = (a) => ({ name: "哈哈哈", age: 18 });
console.log(func5());

默認(rèn)值

// (msg="你好")  你好就是mag的默認(rèn)值
// 如果調(diào)用函數(shù)時(shí),沒(méi)有傳遞參數(shù),就使用默認(rèn)值
// 如果傳遞了參數(shù),就會(huì)用傳遞的參數(shù),而不會(huì)使用默認(rèn)值

const func1 = (msg = "你好") => {
console.log(msg);
};
func1();
const func2 = (msg) => {
console.log(msg);
};
func2(); //undefined   沒(méi)有默認(rèn)值也沒(méi)有傳參,就會(huì)返回undefined

// 定義一個(gè)函數(shù),接收一個(gè)數(shù)組,返回?cái)?shù)組長(zhǎng)度
const getLength = (arr = []) => console.log(arr.length);
const list = ["a"];
getLength(list); //1  這里傳入一個(gè)值
getLength(); //0

解構(gòu)

// 解構(gòu)只是一種更簡(jiǎn)潔,方便來(lái)獲取數(shù)據(jù)的寫(xiě)法
const arr = [1, 2, 3, 4];
// 獲取前兩位,老方法
// const str3 = arr[0];
// const str4 = arr[1];
// console.log(str3, str4);

const [str1, str2] = arr;
console.log(str1, str2); //1 2

// 交換變量,解構(gòu)
let a = 100;
let b = 200;
[b, a] = [a, b];
console.log(a, b); //200 100

// 對(duì)象解構(gòu)
const obj = { name: "哈哈哈", age: 18 };
const { name, age } = obj;
console.log(name, age); //哈哈哈 18

對(duì)象簡(jiǎn)寫(xiě)

const name = "哈哈";
const age = 18;
// const obj = {
//   name: "哈哈",
//   age: 18,
// };

// 如果變量名跟屬性名稱一致的話,可以簡(jiǎn)寫(xiě)成一下形式
// const obj = {
//   name, //name:'name'
//   age,
// };
// console.log(obj);

// 方法簡(jiǎn)寫(xiě)可以將:function省略掉
// const obj = {
//   name,
//   say: function () {
//     console.log("哈哈哈");
//   },
// };
const obj = {
name,
say() {
console.log("這是一個(gè)方法,函數(shù)");
},
};
obj.say();
// console.log(obj.say);  //? say() {console.log("這是一個(gè)方法,函數(shù)");}

剩余運(yùn)算符...

// 剩余運(yùn)算符 是一種比較方便的獲取數(shù)據(jù)的方式
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const [letter1, letter2] = arr;
console.log(letter1, letter2);
// 希望獲取到剩余所有元素 放在新數(shù)組中 newArr是新數(shù)組名字(自定義)
const [let1, let2, let3, ...newArr] = arr;
console.log(newArr);

const list = ["a", "b", "c"];
const [str1, str2, str3, ...newList] = list;
console.log(newList); //得到空數(shù)組[]

const obj1 = { a: 1, b: 2, c: 3, d: 4 };
const { a } = obj1;
console.log(a); //1
const obj2 = { b: 2, c: 3, d: 4 };
const { b, c, d, ...obj3 } = obj2;
console.log(obj3); //空對(duì)象

calc(1); //[1]
calc(1, 2); //[1,2]
calc(1, 2, 3); //[1,2,3]

function calc(...params) {
// params可以獲取所有傳遞給calc的參數(shù) 封裝到一個(gè)數(shù)組中
console.log(params);
// 對(duì)數(shù)組做什么業(yè)務(wù)都可以 計(jì)算總和 計(jì)算最大值 最小值
}

值類(lèi)型和引用類(lèi)型

// js數(shù)據(jù)類(lèi)型 分成了兩種 1 值類(lèi)型  2 引用類(lèi)型
// 1 值類(lèi)型 簡(jiǎn)單數(shù)據(jù)類(lèi)型  字符串豌注、數(shù)字夫偶、布爾類(lèi)型晕鹊、
// 2 引用類(lèi)型   對(duì)象 蜻拨、 數(shù)組

// 兩者區(qū)別 體現(xiàn)  =
// 值類(lèi)型 使用 = 復(fù)制
// 引用類(lèi)型 使用 =  關(guān)聯(lián)在一起

// let a =1 ;
// let b = a;
// // b a 的一份復(fù)制 兩個(gè)值 一樣 但是兩個(gè)數(shù)據(jù)是完全獨(dú)立元扔!
// b=10;
// // a 不會(huì)發(fā)生變化
// console.log(a);

const obj = { username: "悟空" };
// 也使用 =
const newObj = obj; // newObj 看起來(lái)和 obj 數(shù)據(jù)一樣   兩個(gè)數(shù)據(jù) 本身一起掐场!  修改了其中的任意一個(gè)往扔,另外一個(gè)也會(huì)收到影響
newObj.username = "八戒";
console.log(obj); //{username: '八戒'}

復(fù)制引用類(lèi)型-剩余運(yùn)算符

// 復(fù)制一份對(duì)象,修改新的數(shù)據(jù)之后,舊的數(shù)據(jù)不會(huì)受到影響
const obj = { name: "哈哈", height: 170 };

const newObj = obj;
// const newObj = { ...obj };  //復(fù)制一份
// console.log(obj);//{name: '哈哈', height: 170}
// console.log(newObj);//{name: '哈哈', height: 170}

newObj.name = "悟空";
// console.log(newObj);
console.log(obj); //{name: '悟空', height: 170}  舊的數(shù)據(jù)被更改了

const list = ["a", "b"];
const newList = [...list]; //將舊的復(fù)制一份并放入新數(shù)組newList
newList.push("c");
console.log(list); //["a", "b"]
console.log(newList); //["a", "b","c"]

數(shù)組

map方法

// 處理原數(shù)組,返回新數(shù)組
// map 返回 處理后的數(shù)組
// map 數(shù)組的一個(gè)方法 也會(huì)遍歷數(shù)組 接收一個(gè)函數(shù)
// value 值  index 索引
const arr = ["a", "b", "c"];
const newArr = arr.map(function (value, index) {
return `<li>${index}-${value}</li>`;
});
console.log(newArr); //['<li>0-a</li>', '<li>1-b</li>', '<li>2-c</li>']

map方法跟箭頭函數(shù)結(jié)合

const arr = ["a", "b", "c"];
const newArr = arr.map((value) => `<li>${value}</li>`);
console.log(newArr); //['<li>a</li>', '<li>b</li>', '<li>c</li>']

filter方法

// filter 過(guò)濾 返回 過(guò)濾后的數(shù)組
const arr = [1, 6, 3, 5, 8, 45, 21, 12];
// 返回大于40的數(shù)據(jù),重新組成數(shù)組
const newArr = arr.filter(function (value) {
if (value >= 40) {
return true;
} else {
return false;
}
});

console.log(newArr);

// 結(jié)合箭頭函數(shù)
const newArr2 = arr.filter((value) => value > 40);
console.log(newArr2);

const newArr3 = arr.filter((value) => {
return value >= 20;
});
console.log(newArr3);

every方法

// every 檢測(cè)數(shù)值元素的每個(gè)元素是否都符合條件,全部都符合就會(huì)返回true,否則返回false
const arr = [1, 5, 2, 12, 15, 42, 32, 30, 22];
const result = arr.every(function (value) {
if (value > 20) {
return true;
} else {
return false;
}
});
console.log(result); //false

// 簡(jiǎn)寫(xiě)
const result2 = arr.every((v) => v < 50); //true 全部數(shù)值小于50
console.log(result2); //true

// every 對(duì)于空數(shù)組,也會(huì)直接返回true

some方法

// some檢測(cè)數(shù)組中是否有元素符合指定條件,只要有一個(gè)符合條件都返回true
// 檢測(cè)到符合就返回了,后續(xù)不會(huì)再檢測(cè)下去了
const arr = ["聰明", "聰明", "聰明", "聰明", "憨憨", "聰明", "聰明"];
const result = arr.some((value) => value === "憨憨");
if (result) {
console.log("快樂(lè)");
} else {
console.log("nice");
}

注意點(diǎn):some跟every的區(qū)別

every是全部符合才返回true

some是只要有一個(gè)符合就返回true

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市熊户,隨后出現(xiàn)的幾起案子萍膛,更是在濱河造成了極大的恐慌,老刑警劉巖嚷堡,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卦羡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡麦到,警方通過(guò)查閱死者的電腦和手機(jī)绿饵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瓶颠,“玉大人拟赊,你說(shuō)我怎么就攤上這事〈饬埽” “怎么了吸祟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵瑟慈,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我屋匕,道長(zhǎng)葛碧,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任过吻,我火速辦了婚禮进泼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纤虽。我一直安慰自己乳绕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布逼纸。 她就那樣靜靜地躺著洋措,像睡著了一般。 火紅的嫁衣襯著肌膚如雪杰刽。 梳的紋絲不亂的頭發(fā)上菠发,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音贺嫂,去河邊找鬼雷酪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛涝婉,可吹牛的內(nèi)容都是我干的哥力。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼墩弯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吩跋!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起渔工,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤锌钮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后引矩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體梁丘,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年旺韭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了氛谜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡区端,死狀恐怖值漫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情织盼,我是刑警寧澤杨何,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布酱塔,位于F島的核電站,受9級(jí)特大地震影響危虱,放射性物質(zhì)發(fā)生泄漏羊娃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一埃跷、第九天 我趴在偏房一處隱蔽的房頂上張望蕊玷。 院中可真熱鬧,春花似錦捌蚊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至祷愉,卻和暖如春窗宦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背二鳄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工赴涵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人订讼。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓髓窜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親欺殿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寄纵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.箭頭函數(shù) 箭頭函數(shù)的傳參: 如果只傳遞一個(gè)參數(shù),小括號(hào)可以省略 如果沒(méi)有參數(shù)或者參數(shù)大于1個(gè),小括號(hào)不能省略 ...
    這個(gè)名字很有品味閱讀 181評(píng)論 0 1
  • js高級(jí)第一天 箭頭函數(shù) 概念 語(yǔ)法 傳遞參數(shù) 只有一個(gè)參數(shù) 小括號(hào)可以省略const fn3 = a =>{ ...
    Web_小pang閱讀 178評(píng)論 1 2
  • 面向?qū)ο?面向過(guò)程面向?qū)ο髢?yōu)點(diǎn)性能比面向?qū)ο蟾撸m合跟硬件聯(lián)系很緊密的東西脖苏,例如單片機(jī)就采用的面向過(guò)程編程程拭。易維護(hù)...
    Grandperhaps閱讀 163評(píng)論 0 0
  • 之前只有函數(shù)中存在局部作用域。 一棍潘、聲明變量與常量 1.let關(guān)鍵字 ①let關(guān)鍵字用來(lái)聲明變量恃鞋。②if、for的...
    大刀劈向鬼子閱讀 189評(píng)論 0 0
  • 1.編程思想 2.對(duì)象與類(lèi) 3.面向?qū)ο蟀鎡ab 欄切換 4.構(gòu)造函數(shù)和原型 5.繼承 6.ES5新增方法 7.函...
    Scincyc閱讀 560評(píng)論 0 0