中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

公司網(wǎng)站建設(shè)南寧百度客服電話24小時(shí)人工服務(wù)熱線

公司網(wǎng)站建設(shè)南寧,百度客服電話24小時(shí)人工服務(wù)熱線,軟件開(kāi)發(fā)模型著重研究的是,如何做網(wǎng)站搭橋鏈接一、JS中八種數(shù)據(jù)類型判斷方法 在JavaScript中,數(shù)據(jù)類型分為兩大類:基本(原始)數(shù)據(jù)類型和引用(對(duì)象)數(shù)據(jù)類型。 基本數(shù)據(jù)類型(Primitive Data Types) 基本數(shù)據(jù)類型是表示簡(jiǎn)單的數(shù)…

一、JS中八種數(shù)據(jù)類型判斷方法

在JavaScript中,數(shù)據(jù)類型分為兩大類:基本(原始)數(shù)據(jù)類型和引用(對(duì)象)數(shù)據(jù)類型。

基本數(shù)據(jù)類型(Primitive Data Types)

基本數(shù)據(jù)類型是表示簡(jiǎn)單的數(shù)據(jù)片段,它們是直接存儲(chǔ)在變量中的數(shù)據(jù)。JavaScript中的基本數(shù)據(jù)類型有以下幾種:

  1. String?- 表示文本數(shù)據(jù),例如?"Hello, World!"。
  2. Number?- 表示整數(shù)和浮點(diǎn)數(shù),例如?42?和?3.14。
  3. Boolean?- 表示邏輯值?true?或?false
  4. Undefined?- 表示未定義的值,即變量已聲明但未初始化時(shí)的值。
  5. Null?- 表示空值或者不存在的對(duì)象。在JavaScript中,null?是一個(gè)表示“無(wú)”的對(duì)象,轉(zhuǎn)為數(shù)值時(shí)為?0
  6. Symbol?(ES6新增) - 表示獨(dú)一無(wú)二的值,常用于創(chuàng)建對(duì)象的私有成員。
  7. BigInt?(ES2020新增) - 表示非常大的整數(shù)。

基本數(shù)據(jù)類型的值是不可變的,也就是說(shuō),一旦創(chuàng)建,就不能更改。如果對(duì)基本數(shù)據(jù)類型的變量進(jìn)行操作,實(shí)際上是創(chuàng)建了一個(gè)新的變量或值。

引用數(shù)據(jù)類型(Reference Data Types)

引用數(shù)據(jù)類型表示的是數(shù)據(jù)的集合,它們存儲(chǔ)的是對(duì)數(shù)據(jù)的引用(內(nèi)存地址),而不是數(shù)據(jù)本身。在JavaScript中,最常見(jiàn)的引用數(shù)據(jù)類型是對(duì)象(Object),還包括以下幾種:

  1. Object?- 表示一組無(wú)序的鍵值對(duì),例如?{name: "Alice", age: 25}
  2. Array?- 表示一組有序的數(shù)據(jù)集合,例如?[1, 2, 3, 4]。
  3. Function?- 表示函數(shù),JavaScript中的函數(shù)是一等公民,可以作為對(duì)象使用。
  4. Date?- 表示日期和時(shí)間。
  5. RegExp?- 表示正則表達(dá)式。

引用數(shù)據(jù)類型的值是可變的,這意味著可以改變它們的內(nèi)容而不改變它們的身份。例如,可以向?qū)ο筇砑訉傩曰蛐薷臄?shù)組中的元素。

基本數(shù)據(jù)類型與引用數(shù)據(jù)類型的區(qū)別

以下是一些基本數(shù)據(jù)類型和引用數(shù)據(jù)類型之間的關(guān)鍵區(qū)別:

  • 存儲(chǔ)方式:基本數(shù)據(jù)類型的值直接存儲(chǔ)在變量中,而引用數(shù)據(jù)類型存儲(chǔ)的是內(nèi)存地址。
  • 賦值:基本數(shù)據(jù)類型賦值時(shí)是傳遞值,而引用數(shù)據(jù)類型賦值時(shí)是傳遞引用。
  • 比較:基本數(shù)據(jù)類型比較的是值,而引用數(shù)據(jù)類型比較的是引用地址。
  • 參數(shù)傳遞:在函數(shù)中,基本數(shù)據(jù)類型作為參數(shù)傳遞時(shí),傳遞的是值的副本;引用數(shù)據(jù)類型傳遞的是引用地址。

理解這些差異對(duì)于編寫(xiě)高效和正確的JavaScript代碼非常重要。

八種數(shù)據(jù)類型判斷方式

二、NaN

三、數(shù)值千分位的六種方法

1.format with array

(number + '')?是一種常見(jiàn)的類型轉(zhuǎn)換技巧,它將數(shù)字?number?轉(zhuǎn)換為字符串。無(wú)論?number?是什么數(shù)字,加上一個(gè)空字符串?''?后,結(jié)果都會(huì)是一個(gè)字符串形式的?number。

function format_with_array(number) {// 轉(zhuǎn)為字符串,并按照.拆分var arr = (number + '').split('.');// 整數(shù)部分再拆分var int = arr[0].split('');// 小數(shù)部分var fraction = arr[1] || '';// 返回的變量var r = "";var len = int.length;// 倒敘并遍歷int.reverse().forEach(function (v, i) {// 非第一位并且是位值是3的倍數(shù), 添加 ","if (i !== 0 && i % 3 === 0) {r = v + "," + r;} else {// 正常添加字符r = v + r;}})// 整數(shù)部分和小數(shù)部分拼接return r + (!!fraction ? "." + fraction : '');
}const print = console.log;
print(format_with_array(938765432.02));938765432.02
  1. var arr = (number + '').split('.');

    這行代碼首先通過(guò)?number + ''?將數(shù)字?number?轉(zhuǎn)換為字符串。這是因?yàn)?split?方法是字符串的方法,不能直接在數(shù)字上使用。
    然后使用?split('.')?方法將字符串按照小數(shù)點(diǎn)(.)分割成兩部分,結(jié)果存儲(chǔ)在數(shù)組?arr?中。如果?number?是一個(gè)整數(shù),那么?arr?將只有一個(gè)元素,即整數(shù)部分;如果?number?是一個(gè)小數(shù),那么?arr將有兩個(gè)元素,第一個(gè)元素是整數(shù)部分,第二個(gè)元素是小數(shù)部分。
  2. var int = arr[0].split('');

    這行代碼將?arr?數(shù)組中的第一個(gè)元素(即整數(shù)部分)再次使用?split('')?方法進(jìn)行分割。由于沒(méi)有指定分隔符,實(shí)際上是將整數(shù)部分的每個(gè)字符分割成一個(gè)單獨(dú)的字符串,并將結(jié)果存儲(chǔ)在數(shù)組?int?中。例如,如果整數(shù)部分是?"123",那么?int?將是?["1", "2", "3"]。
  3. var fraction = arr[1] || '';

    這行代碼嘗試獲取?arr?數(shù)組中的第二個(gè)元素(即小數(shù)部分)。如果?arr?只有一個(gè)元素(即?number?是一個(gè)整數(shù)),那么?arr[1]?將是?undefined。
    使用邏輯或運(yùn)算符?||,如果?arr[1]?是?undefined(即沒(méi)有小數(shù)部分),則將?fraction?設(shè)置為一個(gè)空字符串?''。如果存在小數(shù)部分,則?fraction?將是小數(shù)部分的字符串。

return r + (!!fraction ? "." + fraction : '');

  1. r +:這是字符串拼接的開(kāi)始,將數(shù)字?r?轉(zhuǎn)換為字符串并準(zhǔn)備拼接。

  2. !!fraction:這是雙重邏輯非操作符,用于將?fraction?轉(zhuǎn)換為布爾值。如果?fraction?是非空字符串、非零數(shù)字或任何“真值”對(duì)象,則?!!fraction?將為?true;如果?fraction?是空字符串、零、null、undefined?或任何“假值”,則?!!fraction?將為?false

  3. ? "." + fraction : '':這是一個(gè)條件(三元)運(yùn)算符,它根據(jù)?!!fraction?的結(jié)果來(lái)決定返回的值。如果?!!fraction?為?true(即?fraction?有值),則返回?"." + fraction,即小數(shù)點(diǎn)加上?fraction?的值;如果?!!fraction?為?false(即?fraction?沒(méi)有值或?yàn)榧僦?#xff09;,則返回空字符串?''

整體來(lái)看,這段代碼的作用是:

如果?fraction?有值,那么返回的字符串將是?r?后面跟著一個(gè)小數(shù)點(diǎn)和?fraction?的值。如果?fraction?沒(méi)有值或?yàn)榧僦?#xff0c;那么返回的字符串就只是?r?轉(zhuǎn)換成的字符串。

2.format with substring

function format_with_substring(number) {// 數(shù)字轉(zhuǎn)字符串, 并按照 .分割var arr = (number + '').split('.');var int = arr[0] + '';var fraction = arr[1] || '';// 多余的位數(shù)var f = int.length % 3;// 獲取多余的位數(shù),f可能是0, 即r可能是空字符串var r = int.substring(0, f);// 每三位添加","和對(duì)應(yīng)的字符for (var i = 0; i < Math.floor(int.length / 3); i++) {r += ',' + int.substring(f + i * 3, f + (i + 1) * 3)}//多余的位數(shù),上面if (f === 0) {r = r.substring(1);}// 整數(shù)部分和小數(shù)部分拼接return r + (!!fraction ? "." + fraction : '');
}const print = console.log;
print(format_with_substring(938765432.02));

3.format with mod

function format_with_mod(number) {var n = number;  // 將傳入的參數(shù) number 賦值給變量 n,用于后續(xù)計(jì)算,保留原始數(shù)值不變。var r = "";     // 初始化一個(gè)空字符串 r,用于存儲(chǔ)格式化后的結(jié)果。var temp;       // 聲明一個(gè)變量 temp,用于暫存計(jì)算過(guò)程中的中間值。do {mod = n % 1000;  // 計(jì)算 n 除以 1000 的余數(shù),即取 n 的最后三位數(shù)字(包括小數(shù)部分)。n = n / 1000;    // 將 n 除以 1000,即每次循環(huán)處理掉 n 的最后三位數(shù)字。temp = ~~mod;    // 使用雙按位非操作符(~~)來(lái)取整,去除 mod 的小數(shù)部分,獲取整數(shù)部分。// 以下代碼用于構(gòu)造格式化字符串:// 如果 n 大于等于 1,說(shuō)明還有更多的數(shù)字需要處理,因此使用 padStart(3, "0") 來(lái)確保 temp 是三位數(shù)字,不足部分用 "0" 填充。// 如果 r 已經(jīng)有內(nèi)容,則在 temp 前面加上 ",",否則直接使用 temp。r = (n >= 1 ? `${temp}`.padStart(3, "0") : temp) + (!!r ? "," + r : "");} while (n >= 1);  // 當(dāng) n 大于等于 1 時(shí),繼續(xù)循環(huán),直到 n 小于 1。var strNumber = number + "";  // 將數(shù)字 number 轉(zhuǎn)換為字符串,以便后續(xù)查找小數(shù)點(diǎn)位置。var index = strNumber.indexOf(".");  // 查找小數(shù)點(diǎn)的位置。// 如果存在小數(shù)點(diǎn)(index >= 0),則將原始數(shù)字的小數(shù)部分添加到格式化字符串 r 的末尾。if (index >= 0) {r += strNumber.substring(index);}return r;  // 返回格式化后的字符串。
}const print = console.log;  // 將 console.log 方法賦值給變量 print,便于后續(xù)使用。
print(format_with_mod(38765432.02));  // 調(diào)用 format_with_mod 函數(shù)并打印結(jié)果。

4.format with regex

const print = console.log;
print(/hello (?=[a-z]+)/.test("hello a"));
print(/hello (?=[a-z]+)/.test("hello 1"));  
function format_with_regex(number) {var reg = /\d{1,3}(?=(\d{3})+$)/g;return (number + '').replace(reg, '$&,');
}// 987, 654, 321// const print = console.log;
// print(format_with_regex(987654321));function format_with_regex(number) {var reg = /\d{1,3}(?=(\d{3})+$)/g;return (number + '').replace(reg, function(match, ...args){    console.log(match, ...args);return match + ','});
}
format_with_regex(987654321)// function format_with_regex(number) {
//     var reg = /(\d)(?=(?:\d{3})+$)/g
//     return (number + '').replace(reg, '$1,');
// }

5.format with toLocaleString

function format_with_toLocaleString(number, minimumFractionDigits, maximumFractionDigits) {minimumFractionDigits = minimumFractionDigits || 2;maximumFractionDigits = (maximumFractionDigits || 2);maximumFractionDigits = Math.max(minimumFractionDigits, maximumFractionDigits);return number.toLocaleString("en-us", {maximumFractionDigits: maximumFractionDigits || 2,minimumFractionDigits: minimumFractionDigits || 2})
}function format_with_toLocaleString(number) {return number.toLocaleString("en-us")
}const print = console.log;
print(format_with_toLocaleString(938765432.02));

6.Intl.NumberFormat

function format_with_Intl(number, minimumFractionDigits, maximumFractionDigits) {minimumFractionDigits = minimumFractionDigits || 2;maximumFractionDigits = (maximumFractionDigits || 2);maximumFractionDigits = Math.max(minimumFractionDigits, maximumFractionDigits);return new Intl.NumberFormat('en-us', {maximumFractionDigits: maximumFractionDigits || 2,minimumFractionDigits: minimumFractionDigits || 2}).format(number)
}// 使用默認(rèn)配置選項(xiàng)
// function format_with_Intl(number) {
//     return new Intl.NumberFormat('en-us').format(number)
// }const print = console.log;
print(format_with_Intl(938765432.02));

7.效果對(duì)比

對(duì)比一下這六種方法的性能

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>數(shù)字千分位</title>
</head><body><div style="text-align:center"><p><input type="number" value="5000" id="textCount" /></p><p><input type="button" onclick="executeTest()" value="測(cè)試" /><input type="button" onclick="javascript:document.getElementById('messageEl').innerHTML=''" value="清除" /></p></div><div id="messageEl" style="width: 300px;margin: auto;"></div><script>function format_with_array(number) {var arr = (number + '').split('.');var int = arr[0].split('');var fraction = arr[1] || '';var r = "";var len = int.length;int.reverse().forEach(function(v, i) {if (i !== 0 && i % 3 === 0) {r = v + "," + r;} else {r = v + r;}})return r + (!!fraction ? "." + fraction : '');}</script><script>function format_with_substring(number) {var arr = (number + '').split('.');var int = arr[0] + '';var fraction = arr[1] || '';var f = int.length % 3;var r = int.substring(0, f);for (var i = 0; i < Math.floor(int.length / 3); i++) {r += ',' + int.substring(f + i * 3, f + (i + 1) * 3)}if (f === 0) {r = r.substring(1);}return r + (!!fraction ? "." + fraction : '');}</script><script>function format_with_mod(number) {var n = number;var r = "";var temp;var mod;do {mod = n % 1000;n = n / 1000;temp = ~~mod;r = (n > 1 ? `${temp}`.padStart(3, "0") : temp) + (!!r ? "," + r : "")} while (n > 1)var strNumber = number + "";var index = strNumber.indexOf(".");if (index > 0) {r += strNumber.substring(index);}return r;}</script><script>function format_with_regex(number) {var reg = /(\d{1,3})(?=(\d{3})+(?:$|\.))/g;// var reg = /(\d)(?=(?:\d{3})+$)/g//var reg = /\d{1,3}(?=(\d{3})+$)/g;return (number + '').replace(reg, '$1,');}</script><script>// function format_with_toLocaleString(number, minimumFractionDigits, maximumFractionDigits) {//     minimumFractionDigits = minimumFractionDigits || 2;//     maximumFractionDigits = (maximumFractionDigits || 2);//     maximumFractionDigits = Math.max(minimumFractionDigits, maximumFractionDigits);//     return number.toLocaleString("en-us", {//         maximumFractionDigits: maximumFractionDigits || 2,//         minimumFractionDigits: minimumFractionDigits || 2//     })// }function format_with_toLocaleString(number) {return number.toLocaleString("en-us")}</script><script>// function format_with_Intl(number, minimumFractionDigits, maximumFractionDigits) {//     minimumFractionDigits = minimumFractionDigits || 2;//     maximumFractionDigits = (maximumFractionDigits || 2);//     maximumFractionDigits = Math.max(minimumFractionDigits, maximumFractionDigits);//     return new Intl.NumberFormat('en-us', {//         maximumFractionDigits: maximumFractionDigits || 2,//         minimumFractionDigits: minimumFractionDigits || 2//     }).format(number)// }const format = new Intl.NumberFormat('en-us');function format_with_Intl(number) {return format.format(number)}</script><script>function getData(count) {var data = new Array(count).fill(0).map(function(i) {var rd = Math.random();var r = rd * Math.pow(10, Math.trunc(Math.random() * 12));if (rd > 0.5) {r = ~~r;}return r})return data;}function test(data, fn, label) {var start = performance.now();for (var i = 0; i < data.length; i++) {fn(data[i]);}var time = performance.now() - start;message((fn.name || label) + ":" + time.toFixed(2) + "ms");}function executeTest() {var data = getData(+textCount.value);test(data, format_with_array);test(data, format_with_mod);test(data, format_with_substring);test(data, format_with_regex);test(data, format_with_toLocaleString);test(data, format_with_Intl);message("-------------------")}function message(msg) {var el = document.createElement("p");el.innerHTML = msg;messageEl.appendChild(el);}</script></body></html>

三、[]+[],{}+{},[]+{},{}+[]

http://www.risenshineclean.com/news/47120.html

相關(guān)文章:

  • 什么網(wǎng)站好看用h5做外貿(mào)網(wǎng)站谷歌seo
  • 怎樣網(wǎng)絡(luò)營(yíng)銷推廣東莞優(yōu)化疫情防控措施
  • 做 專而精 的網(wǎng)站網(wǎng)站宣傳文案范例
  • 網(wǎng)站移動(dòng)頁(yè)面怎么做google關(guān)鍵詞規(guī)劃師
  • 高校網(wǎng)站建設(shè)管理辦法怎樣做一個(gè)自己的網(wǎng)站
  • wordpress會(huì)員查看內(nèi)容收費(fèi)免費(fèi)seo網(wǎng)站的工具
  • 漸變網(wǎng)站seo海外
  • 轉(zhuǎn)業(yè)做網(wǎng)站的工具如何建造自己的網(wǎng)站
  • 蘇州哪家做網(wǎng)站便宜免費(fèi)創(chuàng)建網(wǎng)站軟件
  • 戴爾cs24TY可以做網(wǎng)站嗎蘇州網(wǎng)站開(kāi)發(fā)公司
  • 做站群的網(wǎng)站怎么來(lái)什么軟件可以發(fā)布推廣信息
  • 如何做網(wǎng)站遷移網(wǎng)絡(luò)營(yíng)銷手段
  • 秦皇島住房和城鄉(xiāng)建設(shè)網(wǎng)官網(wǎng)奉化seo頁(yè)面優(yōu)化外包
  • 電商網(wǎng)站開(kāi)發(fā)建設(shè)今日國(guó)際新聞?lì)^條新聞
  • 信用網(wǎng)站建設(shè)內(nèi)容專業(yè)seo網(wǎng)站
  • 馬云將來(lái)淘汰的十個(gè)行業(yè)網(wǎng)站建設(shè)西安網(wǎng)站維護(hù)
  • 網(wǎng)站建設(shè)找星火龍佛山seo培訓(xùn)機(jī)構(gòu)
  • 模版網(wǎng)站后期可以更換圖片嗎seo和sem的區(qū)別
  • 重慶做網(wǎng)站建設(shè)seo推廣一年要多少錢
  • 做視頻網(wǎng)站掙錢嗎百度關(guān)鍵詞排名優(yōu)化
  • 網(wǎng)站設(shè)計(jì)的寬度百度seo刷排名軟件
  • 昆明賢邦網(wǎng)站建設(shè)百度站長(zhǎng)工具seo查詢
  • 網(wǎng)站重大建設(shè)項(xiàng)目公開(kāi)發(fā)布制度營(yíng)銷戰(zhàn)略包括哪些方面
  • 中介網(wǎng)站怎么做seo排名優(yōu)化聯(lián)系13火星軟件
  • 昆明如何做百度的網(wǎng)站搜多多搜索引擎入口
  • 江西省城鄉(xiāng)建設(shè)廳網(wǎng)站查詢證件西安網(wǎng)站seo價(jià)格
  • 網(wǎng)頁(yè)網(wǎng)站建設(shè)軟件有哪些百度品牌推廣
  • 政府網(wǎng)站建設(shè)多少錢商品促銷活動(dòng)策劃方案
  • wordpress 頭像設(shè)置湖南靠譜seo優(yōu)化公司
  • 網(wǎng)站如何做移動(dòng)適配百度一下百度主頁(yè)