成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

19種JS高(炫)效(技)縮寫法!

shmily / 1253人閱讀

摘要:雙重按位非雙重按位非的效果等于相當(dāng)于注意注意,這條確實(shí)不利于其他人看懂,需要合作的項(xiàng)目勿用,用了記得加注釋由你來(lái)補(bǔ)充那我來(lái)補(bǔ)充一條吧雙重就是的次方,也不用調(diào)用的方法了

原文:19+ JavaScript Shorthand Coding Techniques

1 使用三目運(yùn)算符

使用三目運(yùn)算符,可以更簡(jiǎn)潔地把if else寫成一行

const x = 20;
let answer;
if (x > 10) {
    answer = "greater than 10";
} else {
    answer = "less than 10";
}
const answer = x > 10 ? "greater than 10" : "less than 10";
2 短路求值

當(dāng)你把一個(gè)變量的值賦給另一個(gè)變量,如果你要求原變量不能是空或者未定義,你有一長(zhǎng)一短兩種寫法

if (variable1 !== null || variable1 !== undefined || variable1 !== "") {
     let variable2 = variable1;
}
const variable2 = variable1  || "new";
3 聲明變量的簡(jiǎn)寫
let x;
let y;
let z = 3;

寫成

let x, y, z=3;

(譯者注:其實(shí)現(xiàn)在standard風(fēng)格不推薦聲明簡(jiǎn)寫)

4 if的簡(jiǎn)寫
if (likeJavaScript === true)
//簡(jiǎn)化為
if (likeJavaScript)

注意:這兩個(gè)例子不嚴(yán)格相等,likeJavaScript還可能是其他“為真”的值,參考這里

let a;
if ( a !== true ) {
// do something...
}
//簡(jiǎn)化為
let a;
if ( !a ) {
// do something...
}
5 JavaScript for循環(huán)簡(jiǎn)寫
for (let i = 0; i < allImgs.length; i++)
//簡(jiǎn)化為
for (let index of allImgs)
//譯者拓展,用于循環(huán)key,不推薦在數(shù)組使用
for (let index in allImgs)
6 短路求值

其實(shí)就是第二點(diǎn)...

7 十進(jìn)制指數(shù)

可能你早就知道了,這是一個(gè)不用在末尾寫一堆0的方法。例如1e7代表1后面跟7個(gè)0,也就是十進(jìn)制的1000000。

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

// All the below will evaluate to true
1e0 === 1;
1e1 === 10;
1e2 === 100;
1e3 === 1000;
1e4 === 10000;
1e5 === 100000;
8 對(duì)象屬性的縮寫

ES6提供的方法讓你更簡(jiǎn)單地創(chuàng)建對(duì)象字面量,如果屬性名和值一樣的話,你可以如下縮寫

const obj = { x:x, y:y };
// 等同于
const obj = { x, y };
9 用箭頭函數(shù)讓代碼更簡(jiǎn)潔
function sayHello(name) {
  console.log("Hello", name);
}

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

list.forEach(function(item) {
  console.log(item);
});
// 簡(jiǎn)化為
sayHello = name => console.log("Hello", name);

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

list.forEach(item => console.log(item));

另外,注意箭頭函數(shù)里的this和普通函數(shù)不同

10 箭頭函數(shù)的隱形return
function calcCircumference(diameter) {
  return Math.PI * diameter
}
// 簡(jiǎn)化為
calcCircumference = diameter => Math.PI * diameter

注意:這個(gè)情況下返回的必須是一行語(yǔ)句,如果返回對(duì)象要加(),多行語(yǔ)句還是用{}return

11 默認(rèn)參數(shù)

ES6允許你的函數(shù)有默認(rèn)參數(shù)了,趕緊用起來(lái)

function volume(l, w, h) {
  if (w === undefined)
    w = 3;
  if (h === undefined)
    h = 4;
  return l * w * h;
}
// 簡(jiǎn)化為
volume = (l, w = 3, h = 4 ) => (l * w * h);

volume(2) //output: 24
12 反引號(hào)與模板字符串
const welcome = "You have logged in as " + first + " " + last + "."

const db = "http://" + host + ":" + port + "/" + database;
// 簡(jiǎn)化為
const welcome = `You have logged in as ${first} ${last}`;

const db = `http://${host}:${port}/${database}`;
13 結(jié)構(gòu)賦值

引入一個(gè)組件之后你還要一個(gè)一個(gè)拆出來(lái)?現(xiàn)在不用了!

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;
// 你還可以更改變量名
const { store, form, loading, errors, entity:contact } = this.props;
14 反引號(hào)與多行字符串
JavaScriptconst 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.
	"
// 簡(jiǎn)化為
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.`
15 擴(kuò)展運(yùn)算符

可以代替一些數(shù)組操作,并且比數(shù)組操作更靈活

// 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];

譯者:擴(kuò)展運(yùn)算符就等于把內(nèi)容攤開,你可以簡(jiǎn)單理解為把[]去掉
跟concat()不同,你可以在數(shù)組任何地方使用擴(kuò)展運(yùn)算符展開

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

也可以結(jié)合結(jié)構(gòu)賦值使用

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 }
16 強(qiáng)制參數(shù)(其實(shí)又跟11一樣)
function foo(bar) {
  if(bar === undefined) {
    throw new Error("Missing parameter!");
  }
  return bar;
}
// 簡(jiǎn)化為
mandatory = () => {
  throw new Error("Missing parameter!");
}

foo = (bar = mandatory()) => {
  return bar;
}
17 Array.find

你可能用for循環(huán)寫過一個(gè)find函數(shù),但是ES6已經(jīng)引入了這個(gè)新特性!

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

function findDog(name) {
  for(let i = 0; i pet.type ==="Dog" && pet.name === "Tommy");
console.log(pet); // { type: "Dog", name: "Tommy" }

(譯者:find跟filter的區(qū)別是filter返回?cái)?shù)組,find只返回找到的第一個(gè))

18 Object [key]

你知道foo.bar可以寫成foo["bar"]嗎?當(dāng)然,不是知道這種用法就該這么用,但是這么寫可以讓你重用一些代碼。
以下是一個(gè)簡(jiǎn)單的驗(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

這個(gè)函數(shù)完美地完成了他的任務(wù),但是當(dāng)你有很多表單需要驗(yàn)證,而且格式和規(guī)則都不同的時(shí)候,你就需要一個(gè)通用的驗(yàn)證函數(shù)了。

// object validation rules
const schema = {
  first: {
    required:true
  },
  last: {
    required:true
  }
}

// universal validation function
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
19 雙重按位非

雙重按位非的效果等于Math.floor()

Math.floor(4.9) === 4  //true
// 相當(dāng)于
~~4.9 === 4  //true

注意注意,這條確實(shí)不利于其他人看懂,需要合作的項(xiàng)目勿用,用了記得加注釋

20 由你來(lái)補(bǔ)充 ? 21 那我來(lái)補(bǔ)充一條吧!雙重*
3 ** 3 === 3 * 3 * 3
//a ** b就是a的b次方,也不用調(diào)用Math的方法了

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91910.html

相關(guān)文章

  • 不“破”阿里終不還,“寒潮”之下Java程序員的凌云壯志

    摘要:終上所述這一切的一切,就是因?yàn)槟慵夹g(shù)不行但使龍城飛將在,不破樓蘭終不還但使雙手兩眼在,不入阿里終不還是的,只要你雙手還能敲代碼,雙眼還能看得見,對(duì)于程序員來(lái)說,阿里等這些大廠將會(huì)是你技術(shù)的必達(dá)點(diǎn)。 人在屋檐下,哪能不低頭 (記2018年底互聯(lián)網(wǎng)大寒潮) showImg(https://segmentfault.com/img/bVbmULW?w=240&h=240); 伴隨著深冬凌冽的...

    GitCafe 評(píng)論0 收藏0
  • 不“破”阿里終不還,“寒潮”之下Java程序員的凌云壯志

    摘要:終上所述這一切的一切,就是因?yàn)槟慵夹g(shù)不行但使龍城飛將在,不破樓蘭終不還但使雙手兩眼在,不入阿里終不還是的,只要你雙手還能敲代碼,雙眼還能看得見,對(duì)于程序員來(lái)說,阿里等這些大廠將會(huì)是你技術(shù)的必達(dá)點(diǎn)。 人在屋檐下,哪能不低頭 (記2018年底互聯(lián)網(wǎng)大寒潮) showImg(https://segmentfault.com/img/bVbmULW?w=240&h=240); 伴隨著深冬凌冽的...

    高璐 評(píng)論0 收藏0
  • 談?wù)劤R奌5制作方法——視頻與CSS3

    摘要:但目前白名單申請(qǐng)途徑已經(jīng)關(guān)閉。目前在安卓有一種同層播放器的解決方案??山鉀Q安卓機(jī)自動(dòng)全屏以及視頻播放完畢會(huì)跳出廣告的問題,并且可以實(shí)現(xiàn)交互。 本文在H5動(dòng)效的常見制作手法的基礎(chǔ)上,對(duì)相印的H5動(dòng)效制作手法進(jìn)行了擴(kuò)展和整理,并結(jié)合案例談?wù)勗趺磳⑵渥龅蒙鷦?dòng)。 視頻類 1、體驗(yàn)案例 視頻類h5可以帶給用戶動(dòng)效逼真,流暢的體驗(yàn)。雖然說制作視頻的難度較大,但是瑕不掩瑜,一支視頻可以盡可能地創(chuàng)造出...

    tracy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<