日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

昨天看權(quán)威指南的時(shí)候看到一個(gè)個(gè)人覺(jué)得很優(yōu)雅的寫法,便想著記錄一下(我的夢(mèng)想就是寫一手富有詩(shī)意的優(yōu)雅代碼)在Js世界中,有些操作會(huì)讓你無(wú)法理解,但是卻無(wú)比優(yōu)雅。如有錯(cuò)誤,歡迎批評(píng)指正!(看前先點(diǎn)贊,養(yǎng)成好習(xí)慣哈哈哈)

JavaScript優(yōu)雅寫法及騷操作

 

1、 判斷為空

  • 直白寫法
    if(a == undefined) a = [];
    
    if(params.success){
        params.success(res);
    }
  • 優(yōu)雅寫法
     a = a || [];
    
    params.success&¶ms.success(res);
    //注意事項(xiàng)
    1、if內(nèi)不能出現(xiàn)var、=等賦值定義語(yǔ)句,才可以使用優(yōu)雅寫法
    2、if內(nèi)可以有多個(gè)方法調(diào)用,但必須方法內(nèi)有true返回值(此用法意義不大)

問(wèn)題:我們編寫js代碼時(shí)經(jīng)常遇到復(fù)雜邏輯判斷的情況,通常大家可以用if/else或者switch來(lái)實(shí)現(xiàn)多個(gè)條件判斷,但這樣會(huì)有個(gè)問(wèn)題,隨著邏輯復(fù)雜度的增加,代碼中的if/else/switch會(huì)變得越來(lái)越臃腫,越來(lái)越看不懂.

2、多條件判斷

  • 小白寫法
    var Statistics = function(){
      console.log('執(zhí)行')
    }
    switch (currentTab) 
    {
       case 0:
           Statistics();
           break;
      case 1:
         Statistics();
           break;
       case 2:
           Statistics();
         break;
        case 3:
         Statistics();
         break;
    
  • 優(yōu)雅寫法
    //將判斷條件作為對(duì)象的屬性名,將處理邏輯作為對(duì)象的屬性值
    var Statistics = function(){
      console.log('執(zhí)行')
    }
    const comparativeTotles = new Map([
        [0,Statistics],
        [1,Statistics],
        [2,Statistics],
        [3,Statistics]
     ])
    let map = function(val){
          return comparativeTotles.get(val)
    } 
    let getMap  = map(1); //如果查找不到返回undefined
    if(!getMap){
          console.log('查找不到')
    }else{
        concaozuole.log('執(zhí)行操作')
          getMap()
    }
  • if else
/**
 * 按鈕點(diǎn)擊事件
 * @param {number} status 活動(dòng)狀態(tài):1開(kāi)票中 2開(kāi)票失敗 3 開(kāi)票成功 4 商品售罄 5 有庫(kù)存未開(kāi)團(tuán)
 * @param {string} identity 身份標(biāo)識(shí):guest客態(tài) master主態(tài)
 */
const onButtonClick = (status, identity) => {
  if (identity == 'guest') {
    if (status == 1) {
      //函數(shù)處理
    } else if (status == 2) {
      //函數(shù)處理
    } else if (status == 3) {
      //函數(shù)處理
    } else if (status == 4) {
      //函數(shù)處理
    } else if (status == 5) {
      //函數(shù)處理
    } else {
      //函數(shù)處理
    }
  } else if (identity == 'master') {
    if (status == 1) {
      //函數(shù)處理
    } else if (status == 2) {
      //函數(shù)處理
    } else if (status == 3) {
      //函數(shù)處理
    } else if (status == 4) {
      //函數(shù)處理
    } else if (status == 5) {
      //函數(shù)處理
    } else {
      //函數(shù)處理
    }
  }
}
  • 改完后
//利用數(shù)組循環(huán)的特性,符合條件的邏輯都會(huì)被執(zhí)行,那就可以同時(shí)執(zhí)行公共邏輯和單獨(dú)邏輯。
const functionA = ()=>{/*do sth*/}       // 單獨(dú)業(yè)務(wù)邏輯
const functionB = ()=>{/*do sth*/}       // 單獨(dú)業(yè)務(wù)邏輯
const functionC = ()=>{/*send log*/}   // 公共業(yè)務(wù)邏輯
const actions = new Map([
    ['guest_1', () => { functionA }],
    ['guest_2', () => {  functionB }],
    ['guest_3', () => { functionC }],
    ['guest_4', () => { functionA }],
    ['default', () => { functionC  }],
    //...
])
 
/**
 * 按鈕點(diǎn)擊事件
 * @param {string} identity 身份標(biāo)識(shí):guest客態(tài) master主態(tài)
  * @param {number} status 活動(dòng)狀態(tài):1開(kāi)票中 2開(kāi)票失敗 3 開(kāi)票成功 4 商品售罄 5 有庫(kù)存未開(kāi)團(tuán)
 */
const onButtonClick = (identity, status) => {
  let action = actions.get(`${identity}_${status}`) || actions.get('default')
  action.call(this)
}

三、'騷'操作

 

1. 生成隨機(jī)ID

    // 生成長(zhǎng)度為10的隨機(jī)字母數(shù)字字符串
    Math.random().toString(36).substring(2);

2. 每秒更新當(dāng)前時(shí)間

setInterval(()=>document.body.innerhtml=new Date().toLocaleString().slice(10,18))

3. 生成隨機(jī) 16 進(jìn)制 顏色 碼 如 # ffffff

'#' + Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, '0');

4. 返回鍵盤

// 用字符串返回一個(gè)鍵盤圖形
(_=>[..."`1234567890-=~~QWERTYUIOP[]~ASDFGHJKL;'~~ZXCVBNM,./~"].map(x=>(o+=`/${b='_'.repeat(w=x<y?2:' 667699'[x=["BS","TAB","CAPS","ENTER"][p++]||'SHIFT',p])}|`,m+=y+(x+'    ').slice(0,w)+y+y,n+=y+b+y+y,l+=' __'+b)[73]&&(k.push(l,m,n,o),l='',m=n=o=y),m=n=o=y='|',p=l=k=[])&&k.join`
`)()

5. 優(yōu)雅的取整

var a = ~~2.33   ----> 2
var b = 2.33 | 0   ----> 2
var c = 2.33 >> 0   ----> 2

6.優(yōu)雅的金錢格式化

1、使用正則實(shí)現(xiàn)
var test1 = '1234567890'
var format = test1.replace(/B(?=(d{3})+(?!d))/g, ',')
console.log(format) // 1,234,567,890
2、使用騷操作
function formatCash(str) {
       return str.split('').reverse().reduce((prev, next, index) => {
            return ((index % 3) ? next : (next + ',')) + prev
       })
}
console.log(format) // 1,234,567,890

7. 五種方法實(shí)現(xiàn)值交換

1. var temp = a; a = b; b = temp; (傳統(tǒng),但需要借助臨時(shí)變量)
 
2. a ^= b; b ^= a; a ^= b; (需要兩個(gè)整數(shù))
 
3. b = [a, a = b][0] (借助數(shù)組)
 
4. [a, b] = [b, a]; (ES6,解構(gòu)賦值)
 
5. a = a + b; b = a - b; a = a - b; (小學(xué)奧賽題)

8. 實(shí)現(xiàn)深拷貝

var b = JSON.parse(JSON.string(a))

9. 去掉小數(shù)部分

//下面幾種方式都行
parseInt(num)
 
~~num
 
num >> 0
 
num | 0

10. 遞歸求階乘

function factorial(n) {
 
  return (n > 1) ? n * f(n - 1) : n

11. 打印試試

console.log(([][[]] + [])[+!![]] + ([] + {})[!+[] + !![]])
 
console.log((!(~+[]) + {})[--[~+''][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]] * ~+[]])

12. console美化

console.info("%c哈哈", "color: #3190e8; font-size: 30px; font-family: sans-serif");

最后

  • 如果你對(duì)這篇文章感興趣,就點(diǎn)個(gè)贊和關(guān)注吧

原文鏈接:https://juejin.im/post/5e42826551882549063a7b7c

分享到:
標(biāo)簽:JavaScript
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定