Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 好男人社区在线播放,久久久精品2018免费观看,国产亚洲美女精品久久久

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          偶然發(fā)現(xiàn),Javascript中雙重否定的寫法

          者:Daniel 譯者:半糖學前端 來源:js-craft

          原文:http://www.js-craft.io/blog/the-double-negation-in-javascript/

          JS 是一種靈活且輕量級的語言,這種特性讓我們經(jīng)常覺得它是一門最簡單的語言,也是最難掌握的語言。雖然經(jīng)常使用,但我仍然偶然發(fā)現(xiàn)一些我不知道的隱藏語法或技巧。

          在處理錯誤時,我偶然發(fā)現(xiàn)了以下代碼。

          return !!(this.isFirstOverall() || this.get('videoId')

          我非常確定這是一個錯誤,這就是該錯誤的根源。否定否定沒有任何意義。

          但是經(jīng)過一番谷歌搜索后,我發(fā)現(xiàn)Javascript中存在諸如消極負數(shù)之類的問題。

          簡而言之,其目的是將任何表達式轉(zhuǎn)換為實際的true/false布爾值,就像具有Boolean( insert_value_here.)。

          例如下面的表達式:

          const isIE8 = navigator.userAgent.match(/MSIE 8.0/); 
          console.log(isIE8);

          這將記錄一個Array或null。是的,我們可以將其評估null為錯誤。實際上,更確切地說,null是一個錯誤的值。

          但是,如果我們對此雙重否定:

          const isIE8 = !!navigator.userAgent.match(/MSIE 8.0/); 
          console.log(isIE8);

          實際的true/false布爾值將被輸出。

          雙重否定!!是不實際的操作,如&&或||。它只是兩個否定!符號的序列。

          第一個否定將數(shù)據(jù)(無論數(shù)據(jù)類型如何)轉(zhuǎn)換為布爾值,但值相反。第二個否定再次更改布爾值以提供實際結(jié)果。

          // example - the long version
          const x = {}; // truthy
          const y = !x; // false
          const z = !y; // true
          
          // or by using the double negation
          const x = {}; // truthy
          const z = !!x; // true

          使用的優(yōu)缺點!Javascript中的雙重否定

          好吧,這取決于您要弄清楚什么。當然,對于不知道這種雙重否定把戲的人(例如我)來說,實際的代碼看起來會很奇怪。

          另一方面,它將為實際評估提供更清晰的價值。結(jié)果將是對還是錯。例如,您不必再懷疑一個空對象是true還是false。

          const result = {};
          if(result) {
          // make something
          }

          如果本篇文章有任何錯誤和建議,歡迎留言,最后,謝謝大家的觀看。

          我是@半糖學前端 ,一個前端從業(yè)者,專注前端技術(shù)領(lǐng)域分享,關(guān)注我和我一起學習,共同進步!

          嘍,大家好啊,這里是雷工筆記,我是雷工。

          數(shù)據(jù)類型比較常見,無論是對程序員,還是電氣工程師來說,都再熟悉不過了,這里跟著教程了解一下,主要看跟自己以往在其他PLC,C#,組態(tài)軟件中應(yīng)用的有啥不同。

          一、了解數(shù)據(jù)類型

          在計算機的世界就像黑客帝國中的超級計算機,其中的人、物其實都是虛擬的數(shù)據(jù)。

          數(shù)據(jù)類型:用來在計算機中標記程序的運算規(guī)則的。

          計算機程序可以處理海量的數(shù)據(jù),為啥要給數(shù)據(jù)分類?

          1、為了更加充分和高效的應(yīng)用計算機內(nèi)存。

          2、為了更加方便程序猿合理的使用數(shù)據(jù)。

          二、數(shù)據(jù)類型分幾種

          JavaScript中的數(shù)據(jù)類型整體分為兩大類:

          1、基本數(shù)據(jù)類型;

          2、引用數(shù)據(jù)類型(復雜類型);

          三、Number數(shù)字型

          數(shù)字型即我們小學中學到的數(shù)字,可以是整數(shù)、小數(shù)、正數(shù)、負數(shù)。

          數(shù)字類型:只要變量的值是純數(shù)字,且沒有引號,那么當前變量就是數(shù)字類型。

          相比其他組態(tài)軟件中分16位整型,雙整型,有符號,無符號,浮點數(shù)等類型要簡單些。

          示例:

          let age =20 //整數(shù)
          let pi = 3.14 //小數(shù)

          在JavaScript語言中正數(shù)、負數(shù)、小數(shù)等統(tǒng)稱為數(shù)字類型Number。

          注意事項:

          1、JavaScript語言屬于弱數(shù)據(jù)類型,變量到底屬于什么類型,需要等賦值后,才能確定。

          2、Java語言屬于強數(shù)據(jù)類型,例如:int b=4;定義時就確認了,必須是整數(shù)。

          四、算術(shù)運算符

          1、數(shù)字類型在程序中可以有許多操作,例如,加+,減-,乘*、除/,等待,經(jīng)常涉及運算。

          運算涉及到算術(shù)運算符,也稱作數(shù)學運算符,主要包括加、減、乘、除、取余等。

          2、說到計算就涉及計算的優(yōu)先級,在JavaScript中的優(yōu)先級和小學數(shù)學中的算術(shù)優(yōu)先級一樣,都是先乘除,后加減,想改變加括號。

          3、NaN代表一個計算錯誤。它是一個不正確的或者一個未定義的數(shù)學操作所得到的結(jié)果。

          示例:

          console.log('老師'-2) //NaN

          NaN是粘性的。任何對NaN的操作都會返回NaN。

          示例:

          console.log(NaN +2) //NaN

          五、字符串類型string

          1、通過單引號(‘’)、雙引號(“”)包裹的數(shù)據(jù)都叫字符串,單引號和雙引號沒有本質(zhì)上的區(qū)別,推薦使用單引號。

          示例:

          let myName = '雷工筆記' //使用單引號
          let name = “雷工” // 使用雙引號
          let tel = '18712345678' // 看上去是數(shù)字,但是是引號包裹了,就是字符串。
          let str = ‘ ’ // 這種是空字符串

          2、注意事項:

          2.1、無論單引號或是雙引號必須成對應(yīng)用;

          2.2、單引號/雙引號可以互相嵌套,但是不可以自己嵌套自己;

          2.3、必要時可以使用轉(zhuǎn)義符\,輸出單引號或者雙引號。

          3、拼接字符串

          使用場景:+運算符,可以實現(xiàn)字符串的拼接。

          使用口訣:數(shù)字相加,字符相連;

          示例:

          document.write(‘我是’+‘雷工筆記’) //我是雷工筆記
          let myName = ‘高啟強’
          let work = ‘賣魚’
          document.write( myName + work) //高啟強賣魚

          注意:

          只要變量中有一個數(shù)據(jù)類型是字符串類型,那么在計算的時候遇到加號,則直接拼接字符串;

          如果遇到除加號以外的符號,那么計算機先將字符串轉(zhuǎn)換為對應(yīng)的數(shù)字,然后再計算,

          4、模板字符串

          4.1、應(yīng)用場景

          拼接字符串和變量

          在沒有它之前,要拼接變量比較麻煩

          示例:

          document.write(‘哈嘍,大家好,我是’+name+‘!今年‘+age+歲’)

          4.2、模板字符串語法

          ● ``(反引號)

          ●在模板字符串中通過${變量}獲取變量的值。

          ● 反引號在英文輸入模式下,鍵盤鍵Tab上面那個按鍵(1左邊那個按鍵)

          ● 內(nèi)容拼接時,用${}包裹住變量。

          示例:

          document.write(`哈嘍,大家好,我是${name}!今年${name}歲`)

          好像C#中也有類似的應(yīng)用方法。

          六、布爾類型boolean

          表示開關(guān)量,是或否時在計算機中對應(yīng)的是布爾類型。

          他有兩個固定的值,True與False,表示真時用true,表示假時用False。

          true:代表正確的,條件成立的;

          False:代表錯誤的,條件不成立的;

          示例:

          //雷工筆記有趣嘛?
          let isFun = true
          console.log(isFun)

          七、undefined類型

          7.1、未定義是比較特殊的類型,只有一個值undefined。

          7.2、什么情況下出現(xiàn)?

          只聲明變量,不賦值的情況下,變量的默認值為undefined,一般很少【直接】為某個變量賦值為undefined。

          undefined值本身表示的含義未定義;

          示例:

          let name // 聲明變量但是未賦值
          document.write(name) //輸出undefined

          7.3、實例場景:

          我們開發(fā)中經(jīng)常聲明一個變量,等待傳送過來的數(shù)值。

          如果我們不確定這個數(shù)據(jù)是否有傳遞過來,此時我們可以通過檢測這個變量是不是undefined,來確定是否有數(shù)據(jù)傳遞過來。

          八、null類型(對象類型,屬于引用類型)

          8.1、如果變量的值是null,那么變量的數(shù)據(jù)類型叫空類型,——對象類型。

          JS中的null僅僅是一個表示“無”、“空”或“值未知”的特殊值。

          示例:

          let name=null
          console.log(name) //null

          8.2、null和undefined的區(qū)別:

          ● undefined表示木有賦值

          ● null 表示賦值了,但是內(nèi)容為空

          8.3、null實例場景:

          官方說明:把null作為尚未創(chuàng)建的對象。

          將來有個變量里面存放的是一個對象,但是對象還沒創(chuàng)建好,可以先給個null

          九、后記

          以上為學習JavaScript基礎(chǔ)知識數(shù)據(jù)類型的相關(guān)筆記。

          在前端開發(fā)中經(jīng)常會遇到這樣一種需求,使用Javascript格式化數(shù)字進行輸出。最常見的是金額,比如人民幣最小表示單位為分,一般需要精確到小數(shù)點后兩位數(shù)字,而且整數(shù)位每隔三位數(shù)字需要用逗號隔開。

          今天我們就一起來看看如何使用原生Javascript和開源類庫來實現(xiàn)這樣一種功能吧。

          感興趣的可以自行去github上去看源碼,github地址為:

          https://github.com/zhouxiongking/article-pages/blob/master/articles/formatNumber/formatNumber.js

          Javascript

          原生JS實現(xiàn)方法1

          首先我們看看最簡單的實現(xiàn)方法,需要達到這樣的目的。

          輸入一串數(shù)字或者字符串,最后返回格式化后的字符串,每隔3位用逗號分隔,通過四舍五入保留小數(shù)點后2兩位。

          我們來分析下方法的實現(xiàn)過程。

          1. 替換掉原本傳入數(shù)據(jù)中可能出現(xiàn)的'$'和',',然后判斷是否為數(shù)字。

          2. 判斷傳入的數(shù)字是正數(shù)還是負數(shù)。

          3. 判斷小數(shù)位數(shù)的舍入性。

          4. 每隔三位,添加一個逗號。

          5. 重新拼接字符串,正負號+整數(shù)位+小數(shù)點+小數(shù)位

          根據(jù)上述的分析過程,得到的代碼如下。

          方法1

          原生JS實現(xiàn)方法2

          第二種實現(xiàn)方法可以選擇保留小數(shù)位數(shù),它的做法如下。

          1. 將傳入的數(shù)字或者字符串轉(zhuǎn)化為float類型數(shù)據(jù),并進行四舍五入

          2. 用小數(shù)點進行分割,并將整數(shù)位逆序

          3. 對于整數(shù)位,每隔三位添加一個逗號

          4. 再次進行逆序,得到正確的整數(shù)位后拼接小數(shù)位。

          通過上述的分析,得到代碼如下。

          方法2

          原生JS實現(xiàn)方法3

          方法3中,是一個最全面的實現(xiàn),可以選擇向上,向下或者四舍五入來保留小數(shù)位數(shù);同時可以選擇小數(shù)點符號和千分位符號。

          為了讓方法的代碼看起來更清晰,將方法拆分成兩個function,每個function實現(xiàn)自己的功能。

          第一個function作為入口函數(shù),主要包含小數(shù)位的處理,千分位符號位的處理,以及最后返回結(jié)果的處理。

          主function

          第二個function的主要功能是根據(jù)傳入的參數(shù)對數(shù)字進行取整或者四舍五入。

          第二個function

          針對以上的方法,我們可以通過代碼測試。

          測試結(jié)果

          開源庫

          在這里也推薦兩款非常好用的用于格式化數(shù)字的開源庫Numeral.js和accounting.js,兩者都可以格式化貨幣,百分比,時間,幾個小數(shù)位數(shù),千分位等等

          Numeral.js的github地址為:

          https://github.com/adamwdraper/Numeral-js

          目前在Github上超過5K的star,而且呈現(xiàn)增長的趨勢。

          accounting.js的github地址為:

          https://github.com/openexchangerates/accounting.js

          目前在github上有超過3K的star,可以說是非常受歡迎。

          這里簡要介紹下Numeral.js的用法。

          • 使用

          在瀏覽器中使用,可以通過以下代碼去實現(xiàn)。

          使用

          • 格式化

          通過給numeral傳遞數(shù)字,然后通過format方法進行數(shù)字的格式化。

          格式化數(shù)字

          數(shù)字格式化的規(guī)則如下。

          數(shù)字格式化規(guī)則

          其他的類似于貨幣,字節(jié),百分數(shù),時間,科學計數(shù)等的格式化規(guī)則大家可以去官網(wǎng)看看。

          結(jié)束語

          今天這篇文章主要講解了如何格式化數(shù)字成指定的格式,包括原生JS實現(xiàn)以及后面推薦的幾個開源類庫,希望能對大家有幫助。


          主站蜘蛛池模板: 成人区人妻精品一区二区不卡网站 | 久久无码AV一区二区三区| 日本一区二区三区高清| 中文字幕精品一区二区2021年| chinese国产一区二区| 国产第一区二区三区在线观看| 2021国产精品一区二区在线| 免费看一区二区三区四区| 日本精品一区二区三区在线视频 | 精品国产一区在线观看| 麻豆AV一区二区三区久久| 国产免费一区二区视频| 久久99国产一区二区三区| 无码人妻精品一区二区三区99不卡 | 国产午夜精品一区二区三区嫩草| 极品少妇一区二区三区四区| 国产福利一区二区三区| 午夜DV内射一区二区| 亚洲AV无码一区东京热| 国精产品一区二区三区糖心| 中文字幕不卡一区| 中文日韩字幕一区在线观看| 亚洲成a人一区二区三区| 成人国产精品一区二区网站| 波多野结衣一区二区三区高清av | 人妻视频一区二区三区免费| 亚洲av乱码一区二区三区 | 日本高清无卡码一区二区久久 | 亚洲欧洲∨国产一区二区三区| AV天堂午夜精品一区| 手机看片一区二区| 国产一区二区电影| 午夜福利av无码一区二区| 亚洲AV成人一区二区三区在线看 | 另类免费视频一区二区在线观看| 免费萌白酱国产一区二区三区| 国产精品视频一区二区三区四| 消息称老熟妇乱视频一区二区| 男女久久久国产一区二区三区| 一区二区精品在线| 亚洲一区二区无码偷拍|