国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何提升你的javascript代碼逼格之簡寫篇

FuisonDesign / 1013人閱讀

摘要:例如可以簡寫為簡寫賦值方法如果你正在使用任何流行的框架,那么你很有可能使用數(shù)組或以對象本文的形式將數(shù)據(jù)在組件和之間進(jìn)行通信。可以簡寫為以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助

三元運(yùn)算符

當(dāng)你想用一行代碼來寫if...else語句的時候,使用三元操作符是非常好的選擇,例如:

const x = 20;
let answer;
if (x > 10) {
  answer = "is greater";
} else {
  answer = "is lesser";
}

可以簡寫為:

const answer = x > 10 ? "is greater" : "is lesser";

也可以嵌套if語句:

const big = x > 10 ? " greater 10" : x
簡寫短路求值

當(dāng)給一個變量分配另一個值的時候,你可能想確定初值不是null,undefined或空值。這時,你可以寫一個多重條件的if語句:

if (variable1 !== null || variable1 !== undefined || variable1 !== "") {
   let variable2 = variable1;
}

或者可以使用短路求值的方法:

const variable2 = variable1  || "new";
簡寫變量聲明

在定義函數(shù)的時候,你可能需要先聲明多個變量,例如:

let x;
let y;
let z = 3;

這時,你可以使用簡寫的方式節(jié)省很多時間和空間,即同時聲明多個變量:

let x, y, z=3;
簡寫 if 執(zhí)行條件

這可能微不足道,但值得一提。在你做if條件檢查的時候,其賦值操作可以省略,例如:

if (likeJavaScript === true)

可以簡寫為:

if (likeJavaScript)

只有當(dāng)likeJavaScript是真值的時候,以上兩個語句才可以替換。如果判斷假值,例如:

let a;
if ( a !== true ) {
  // do something...
}

可以簡寫為:

let a;
if ( !a ) {
  // do something...
}
簡寫 JavaScript 循環(huán)方法

當(dāng)你想使用純 javascript 而不依賴外庫(例如jQuery)的時候,這是非常有用的。

for (let i = 0; i < allImgs.length; i++)

可以簡寫為:

for (let index in allImgs)

也可以使用Array.forEach:

function logArrayElements(element, index, array) {
  console.log("a[" + index + "] = " + element);
}
[2, 5, 9].forEach(logArrayElements);
// logs:
// a[0] = 2
// a[1] = 5
// a[2] = 9

短路求值

如果想通過判斷參數(shù)是否為null或者undefined來分配默認(rèn)值的話,我們不需要寫六行代碼,而是可以使用一個短路邏輯運(yùn)算符,只用一行代碼來完成相同的操作。例如:

let dbHost;
if (process.env.DB_HOST) {
  dbHost = process.env.DB_HOST;
} else {
  dbHost = "localhost";
}

可以簡寫為:

const dbHost = process.env.DB_HOST || "localhost";
十進(jìn)制指數(shù)

當(dāng)數(shù)字的尾部為很多的零時(如10000000),咱們可以使用指數(shù)(1e7)來代替這個數(shù)字,例如:

for (let i = 0; i < 10000; i++) {}

可以簡寫為:

for (let i = 0; i < 1e7; i++) {}


// 下面都是返回 true
1e0 === 1;
1e1 === 10;
1e2 === 100;
1e3 === 1000;
1e4 === 10000;
1e5 === 100000;
簡寫對象屬性

在 JavaScript 中定義對象很簡單,而且ES6提供了一個更簡單的分配對象屬性的方法。如果屬性名與key值相同,例如:

const obj = { x:x, y:y };

則可以簡寫為:

const obj = { x, y };
簡寫箭頭函數(shù)

傳統(tǒng)函數(shù)很容易讓人理解和編寫,但是當(dāng)它嵌套在另一個函數(shù)中的時候,它就會變得冗長和混亂。例如:

function sayHello(name) {
  console.log("Hello", name);
}

setTimeout(function() {
  console.log("Loaded")
}, 2000);

list.forEach(function(item) {
  console.log(item);
});

這時,可以簡寫為:

sayHello = name => console.log("Hello", name);

setTimeout(() => console.log("Loaded"), 2000);

list.forEach(item => console.log(item));
簡寫隱式返回值

我們經(jīng)常使用return語句來返回函數(shù)最終結(jié)果,僅有一行聲明語句的箭頭函數(shù)能隱式返回其值(這時函數(shù)必須省略{}以便省略return關(guān)鍵字)。如果想要返回多行語句,則需要使用()包圍函數(shù)體。例如:

function calcCircumference(diameter) {
 return Math.PI * diameter
}
var func = function func() {
 return { foo: 1 };
};

可以簡寫為:

calcCircumference = diameter => (
 Math.PI * diameter;
)
var func = () => ({ foo: 1 });
默認(rèn)參數(shù)值

我們經(jīng)常可以使用if語句來為函數(shù)中的參數(shù)定義默認(rèn)值。但是在ES6中,咱們可以在函數(shù)本身聲明參數(shù)的默認(rèn)值。例如:

function volume(l, w, h) {
  if (w === undefined)
    w = 3;
  if (h === undefined)
    h = 4;
  return l * w * h;
}

可以簡寫為:

volume = (l, w = 3, h = 4 ) => (l * w * h);

volume(2)   // output: 24
字符串模板

你是不是厭倦了使用+將多個變量轉(zhuǎn)換為字符串?有沒有更簡單的方法呢?如果你能夠使用ES6,那么很幸運(yùn),你僅需使用反引號并將變量置于${}之中即可。例如:

const welcome = "You have logged in as " + first + " " + last + "."
 
const db = "http://" + host + ":" + port + "/" + database;

可以簡寫為:

const welcome = `You have logged in as ${first} ${last}`;
 
const db = `http://${host}:${port}/${database}`;
簡寫賦值方法

如果你正在使用任何流行的 Web 框架,那么你很有可能使用數(shù)組或以對象本文的形式將數(shù)據(jù)在組件和 API 之間進(jìn)行通信。一旦數(shù)據(jù)對象到達(dá)一個組件,你就需要解壓它。例如:

const observable = require("mobx/observable");
const action = require("mobx/action");
const runInAction = require("mobx/runInAction");
 
const store = this.props.store;
const form = this.props.form;
const loading = this.props.loading;
const errors = this.props.errors;
const entity = this.props.entity;

可以簡寫為:

import { observable, action, runInAction } from "mobx";
 
const { store, form, loading, errors, entity } = this.props;

也可以分配變量名:

// 最后一個變量名為 contact

const { store, form, loading, errors, entity:contact } = this.props;
簡寫多行字符串

如果你曾發(fā)現(xiàn)自己需要在代碼中編寫多行字符串,那么這估計(jì)就是你編寫它們的方法,即在輸出的多行字符串間用+來拼接:

const lorem = "Lorem ipsum dolor sit amet, consectetur
	"
  + "adipisicing elit, sed do eiusmod tempor incididunt
	"
  + "ut labore et dolore magna aliqua. Ut enim ad minim
	"
  + "veniam, quis nostrud exercitation ullamco laboris
	"
  + "nisi ut aliquip ex ea commodo consequat. Duis aute
	"
  + "irure dolor in reprehenderit in voluptate velit esse.
	"

但是如果使用反引號,你就可以達(dá)到簡寫的目的:

const lorem = `Lorem ipsum dolor sit amet, consectetur
  adipisicing elit, sed do eiusmod tempor incididunt
  ut labore et dolore magna aliqua. Ut enim ad minim
  veniam, quis nostrud exercitation ullamco laboris
  nisi ut aliquip ex ea commodo consequat. Duis aute
  irure dolor in reprehenderit in voluptate velit esse.`

擴(kuò)展運(yùn)算符

在ES6中,包括擴(kuò)展運(yùn)算符,它可以使你的操作更簡單,例如:

// joining arrays
const odd = [1, 3, 5];
const nums = [2 ,4 , 6].concat(odd);
 
// cloning arrays
const arr = [1, 2, 3, 4];
const arr2 = arr.slice()

可以簡寫為:

// joining arrays
const odd = [1, 3, 5];
const nums = [2 ,4 , 6, ...odd];
console.log(nums);  // [2, 4, 6, 1, 3, 5]
 
// cloning arrays
const arr = [1, 2, 3, 4];
const arr2 = [...arr];

不像concat()函數(shù),你可以使用擴(kuò)展運(yùn)算符在一個數(shù)組中任意處插入另一個數(shù)組,例如:

const odd = [1, 3, 5 ];
const nums = [2, ...odd, 4, 6];

也可以使用擴(kuò)展運(yùn)算符:

const { a, b, ...z } = { a: 1, b: 2, c: 3, d: 4 };
console.log(a)  // 1
console.log(b)  // 2
console.log(z)  // { c: 3, d: 4 }
強(qiáng)制參數(shù)

默認(rèn)情況下,如果不傳遞值,JavaScript 會將函數(shù)參數(shù)設(shè)置為undefined,而其他一些語言則會報(bào)出警告或錯誤。想要執(zhí)行參數(shù)分配,則可以讓if語句拋出undefined的錯誤,或者使用“強(qiáng)制參數(shù)”的方法。例如:

function foo(bar) {
  if(bar === undefined) {
    throw new Error("Missing parameter!");
  }
  return bar;
}

可以簡寫為:

mandatory = () => {
  throw new Error("Missing parameter!");
}
 
foo = (bar = mandatory()) => {
  return bar;
}
Array.find 簡寫

如果你曾負(fù)責(zé)編寫 JavaScript 中的find函數(shù),那么你很有可能使用了for循環(huán)。在此,介紹ES6中一個名為find()的數(shù)組函數(shù)。

const pets = [
 { type: "Dog", name: "Max"},
 { type: "Cat", name: "Karl"},
 { type: "Dog", name: "Tommy"},
]

function findDog(name) {
 for(let i = 0; i

可以簡寫為:

pet = pets.find(pet => pet.type ==="Dog" && pet.name === "Tommy");
console.log(pet); // { type: "Dog", name: "Tommy" }

簡寫 Object[key]

你知道Foo.bar也可以寫成Foo["bar"]嗎?起初,似乎沒有什么理由讓你這樣寫。然而,這個符號給了你編寫可重用代碼的基礎(chǔ)。考慮如下簡化的驗(yàn)證函數(shù)示例:

function validate(values) {
 if(!values.first)
  return false;
 if(!values.last)
  return false;
 return true;
}
console.log(validate({first:"Bruce",last:"Wayne"})); // true

這個函數(shù)可以完美的完成它的任務(wù)。但是,考慮一個場景,你有很多表單,你需要進(jìn)行驗(yàn)證,但有不同的字段和規(guī)則。那么,構(gòu)建一個可以在運(yùn)行時配置的通用驗(yàn)證函數(shù)不是很好嗎?

// 對象驗(yàn)證規(guī)則
const schema = {
 first: {
  required:true
 },
 last: {
  required:true
 }
}
 
// 通用驗(yàn)證函數(shù)
const validate = (schema, values) => {
 for(field in schema) {
  if(schema[field].required) {
   if(!values[field]) {
    return false;
   }
  }
 }
 return true;
}
console.log(validate(schema, {first:"Bruce"})); // false
console.log(validate(schema, {first:"Bruce",last:"Wayne"})); // true
現(xiàn)在我們就有了一個可以在所有的form中重用的驗(yàn)證函數(shù),而無需為每個form編寫其自定義的驗(yàn)證函數(shù)啦!
簡寫雙重按位非運(yùn)算符

按位運(yùn)算符絕對是你初學(xué) JavaScript 時了解的但一直沒有用武之地的運(yùn)算符。因?yàn)槿绻惶幚矶M(jìn)制,誰會沒事操作0和1呢?但是,雙重按位非運(yùn)算符非常實(shí)用,例如你可以使用它來替代floor()函數(shù),而且與其他相同的操作相比,按位運(yùn)算符的操作速度更快。

Math.floor(4.9) === 4  //true

可以簡寫為:

~~4.9 === 4  //true
Suggest One of U?

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/93847.html

相關(guān)文章

  • 這些JavaScript編程黑科技,裝逼指南,高逼格代碼,讓你驚嘆不已

    摘要:但是,構(gòu)造函數(shù)注意是大寫的有點(diǎn)特別。構(gòu)造函數(shù)接受的參數(shù)中,第一個是要傳入的參數(shù)名,第二個是函數(shù)內(nèi)的代碼用字符串來表示。 Javascript是一門很吊的語言,我可能學(xué)了假的JavaScript,哈哈,大家還有什么推薦的,補(bǔ)充送那啥邀請碼。 本文秉承著:你看不懂是你SB,我寫的代碼就要牛逼。 1、單行寫一個評級組件 ★★★★★☆☆☆☆☆.slice(5 - rate, 10 - rate...

    曹金海 評論0 收藏0
  • 這些JavaScript編程黑科技,裝逼指南,高逼格代碼,讓你驚嘆不已

    摘要:但是,構(gòu)造函數(shù)注意是大寫的有點(diǎn)特別。構(gòu)造函數(shù)接受的參數(shù)中,第一個是要傳入的參數(shù)名,第二個是函數(shù)內(nèi)的代碼用字符串來表示。 Javascript是一門很吊的語言,我可能學(xué)了假的JavaScript,哈哈,大家還有什么推薦的,補(bǔ)充送那啥邀請碼。 本文秉承著:你看不懂是你SB,我寫的代碼就要牛逼。 1、單行寫一個評級組件 ★★★★★☆☆☆☆☆.slice(5 - rate, 10 - rate...

    MorePainMoreGain 評論0 收藏0
  • 這些JavaScript編程黑科技,裝逼指南,高逼格代碼,讓你驚嘆不已

    摘要:但是,構(gòu)造函數(shù)注意是大寫的有點(diǎn)特別。構(gòu)造函數(shù)接受的參數(shù)中,第一個是要傳入的參數(shù)名,第二個是函數(shù)內(nèi)的代碼用字符串來表示。 Javascript是一門很吊的語言,我可能學(xué)了假的JavaScript,哈哈,大家還有什么推薦的,補(bǔ)充送那啥邀請碼。 本文秉承著:你看不懂是你SB,我寫的代碼就要牛逼。 1、單行寫一個評級組件 ★★★★★☆☆☆☆☆.slice(5 - rate, 10 - rate...

    isLishude 評論0 收藏0
  • JavasScript重難點(diǎn)知識

    摘要:忍者級別的函數(shù)操作對于什么是匿名函數(shù),這里就不做過多介紹了。我們需要知道的是,對于而言,匿名函數(shù)是一個很重要且具有邏輯性的特性。通常,匿名函數(shù)的使用情況是創(chuàng)建一個供以后使用的函數(shù)。 JS 中的遞歸 遞歸, 遞歸基礎(chǔ), 斐波那契數(shù)列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果...

    forsigner 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<