![JAVA十大超級(jí)好用的功能推薦_第1頁(yè)](http://file4.renrendoc.com/view/5d28d9f3d0025cebfd29f662f5eddc40/5d28d9f3d0025cebfd29f662f5eddc401.gif)
![JAVA十大超級(jí)好用的功能推薦_第2頁(yè)](http://file4.renrendoc.com/view/5d28d9f3d0025cebfd29f662f5eddc40/5d28d9f3d0025cebfd29f662f5eddc402.gif)
![JAVA十大超級(jí)好用的功能推薦_第3頁(yè)](http://file4.renrendoc.com/view/5d28d9f3d0025cebfd29f662f5eddc40/5d28d9f3d0025cebfd29f662f5eddc403.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Word文檔 JAVA十大超級(jí)好用的功能推薦對(duì)于做開(kāi)發(fā),許多人都會(huì)用到JAVA開(kāi)發(fā)工具,對(duì)于JAVA開(kāi)發(fā)工具來(lái)說(shuō),自然有很多好的有用功能,下面就讓來(lái)和大家來(lái)推舉一下吧。你可能剛上手 JavaScript,或者只是曾經(jīng)間或用過(guò)。不管怎樣,JavaScript 轉(zhuǎn)變了許多,有些特性特別值得一用。 這篇文章介紹了一些特性,在我看來(lái),一個(gè)嚴(yán)厲的 JavaScript 開(kāi)發(fā)者每天都多多少少會(huì)用到這些特性。參考資料下面兩個(gè)關(guān)于 ES6+ 的站點(diǎn)是我的最?lèi)?ài):ES6 FeaturesMDN綻開(kāi)操作符顧名思義,用于對(duì)象或數(shù)組之前的綻開(kāi)操作符(.),將一個(gè)結(jié)構(gòu)綻開(kāi)為列表。 演示一下:let firstHalf =
2、 one, two;let secondHalf = three, four, .firstHalf;這種寫(xiě)法夠優(yōu)雅,夠簡(jiǎn)潔吧? 假如不用綻開(kāi)操作符,我們得這么寫(xiě):let firstHalf = one, two;let secondHalf = three, four;for(var i=0, i secondHalf.push(firstHalfi);綻開(kāi)操作符也適用于合并對(duì)象的屬性:const hero = name: Xena - Warrior Princess, realName: Lucy Lawlessconst heroWithSword = .hero, weapon: s
3、word不用綻開(kāi)操作符的話,需要遍歷對(duì)象的屬性:let keys = Object.keys(hero);let obj = ;for(var i=0; i keys.length; i+) objkeysi = keyspropsi;剩余參數(shù)剩余參數(shù)將剩余的參數(shù)收入數(shù)列。 JavaScript 的特性是參數(shù)數(shù)目很敏捷。 通常會(huì)有一個(gè) arguments 變量收集參數(shù)。 讓我們看一個(gè)例子:function add(first, second, .remaining) return first + second;上面的一段代碼僅僅將 first 和 second 加起來(lái),也就是說(shuō),調(diào)用 add(
4、1, 2) 和 add(1, 2, 3, 4) 會(huì)得到相同的結(jié)果。 下面我們修正一下:function add(first, second, .remaining) return first + second + remaining.reduce(acc, curr) = acc + curr, 0);如前所述,.remaining 收集了剩余的參數(shù),為我們供應(yīng)了這些參數(shù)的命名,清晰地表明我們準(zhǔn)備處理剩余的參數(shù)。 我記得至遲 ES5 已經(jīng)有 arguments 了,不過(guò)少有人知。字符串插值見(jiàn)過(guò)這樣的語(yǔ)句嗎?class Product constructor(name, description,
5、 price) = name; this.description = description; this.price = price; getDescription() return Full description n + name: + + description: + this.description 當(dāng)然,我指的是 getDescription() 方法中那個(gè)可讀性不佳的多行長(zhǎng)語(yǔ)句。 大多數(shù)編程語(yǔ)言中都存在類(lèi)似現(xiàn)象。 一些語(yǔ)言供應(yīng)了字符串插值,幸運(yùn)的是,JavaScript 正是其中之一。 我們改寫(xiě)一下 getDescription() 方法:g
6、etDescription() return Full description n: name: $ description $this.description ;一對(duì) 包起來(lái)的字符串中可以使用 $ 插值。 現(xiàn)在看起來(lái)舒適多了。簡(jiǎn)寫(xiě)屬性在 ES5 中必需這么寫(xiě):function createCoord(x, y) return x: x, y: y ES6 以后可以使用簡(jiǎn)寫(xiě)屬性:function createCoord(x, y) return x, y 看起來(lái)更清爽了吧?方法屬性方法屬性是在對(duì)象中定義指向方法的屬性。 考慮下面一段 ES5 代碼作為例子:const math
7、 = add: function(a,b) return a + b; , sub: function(a,b) return a - b; , multiply: function(a,b) return a * b; ES6 以后只需這么寫(xiě):const math = add(a,b) return a + b; , sub(a,b) return a - b; , multiply(a,b) return a * b; 解構(gòu)賦值解構(gòu)賦值有利于開(kāi)發(fā)者本人的心理健康??紤]下面的代碼:function handle(req, res) const name = ; co
8、nst description = req.body.description; const url = req.url; log(url endpoint, url); / 大量代碼規(guī)律 dbService.createPerson(name, description)不管從什么角度來(lái)看,上面的代碼都不完善,但它的確體現(xiàn)了一種應(yīng)用場(chǎng)景,我們想要從對(duì)象的不同層次獵取數(shù)據(jù)。 你或許會(huì)問(wèn),這里有什么問(wèn)題? 好吧,我可以不用聲明這么多變量,省下一些敲擊鍵盤(pán)的次數(shù)。function handle(req, res) const body: name, description , url = req; l
9、og(url endpoint, url); / 大量代碼規(guī)律 dbService.createPerson(name, description)看,我們上面的代碼將三行壓縮成了一行。解構(gòu)賦值并不僅僅局限于對(duì)象。 它同樣適用于數(shù)組??紤]下面的代碼:const array = 1,2,3,4,5,6;const a = array0;const c = array2;上面的代碼可以用更優(yōu)雅的方式改寫(xiě):const array = 1,2,3,4,5,6;const a, ,c, .remaining = arr;/ remaining = 4,5,6我們可以使用上面的模式匹配分解數(shù)組的值。 我們使
10、用 , , 跳過(guò)某些值。 上面提到過(guò)的剩余參數(shù)這里也能用,在這里我們通過(guò)剩余參數(shù)捕獲了剩余的數(shù)組成員。解構(gòu)賦值還可以用于函數(shù)和參數(shù)。 函數(shù)有不止 2-3 個(gè)參數(shù)時(shí),使用一個(gè)對(duì)象收集全部參數(shù)是 JavaScript 的事實(shí)標(biāo)準(zhǔn)。 例如,下面一個(gè)函數(shù):function doSomething(config) if(config.a) . if(config.b) . if(config.c) . 有更好的寫(xiě)法:function doSomething( a, b, c ) if(a) . if(b) . if(c) . 數(shù)組方法ES6 引入了很多有用的數(shù)組方法,例如:find(),查找列表中的成員
11、,返回 null 表示沒(méi)找到findIndex(),查找列表成員的索引some(),檢查某個(gè)斷言是否至少在列表的一個(gè)成員上為真includes,列表是否包含某項(xiàng)下面的代碼有助于你理解它們的用法:const array = id: 1, checked: true , id: 2 ;arr.find(item = item.id = 2) / id: 2 arr.findIndex(item = item.id = 2) / 1arr.some(item = item.checked) / trueconst numberArray = 1,2,3,4;numberArray.includes(
12、2) / truePromises + Async/Await假如你在這個(gè)圈子里呆了些年頭,或許會(huì)記得曾經(jīng)有一個(gè)時(shí)期我們只有回調(diào),就像這樣:function doSomething(cb) setTimeout() = cb(done) , 3000)doSomething(arg) = console.log(done here, arg);)我們使用回調(diào)是由于有些操作是異步的,需要時(shí)間來(lái)完成。 后來(lái)我們有了 promise 庫(kù),人們開(kāi)頭使用它。 然后 JavaScript 漸漸加入了對(duì) promise 的原生支持。function doSomething() return new Prom
13、ise(resolve, reject) = setTimeout() = resolve(done) , 3000) )doSomething().then(arg = console.log(done here, arg);)我們甚至可以這樣調(diào)用,將 promise 串起來(lái):getUser() .then(getOrderByUser) .then(getOrderItemsByOrder) .then(orderItems = / 處理排序后的成員 )后來(lái)生活更加美妙,我們有了 async/await, 上面一段代碼可以這樣寫(xiě):async function getItems() try
14、const user = await getUser(); const order = await getOrderByUser(user); const items = await getOrderItemsByOrder(order); return items; catch(err) / 在這里處理錯(cuò)誤,建議返回某個(gè)值或者重新拋出錯(cuò)誤 getItems().then(items = / 處理排序后的成員)模塊差不多任何編程語(yǔ)言都支持模塊這一概念,也就是將代碼分為多個(gè)文件,每個(gè)文件是一個(gè)自我包含的單元(模塊)。 考慮下面的代碼:/ math.jsexport function add(a,
15、b) return a + b; export function sub(a,b) return a - b; export default mult(a,b) = a * b;/ main.jsimport mult, add, sub from ./math;mult(2, 4) / 8add(1,1) / 2sub(1,2) / -1我們?cè)谏厦嬗?export 關(guān)鍵字注明白 add 和 sub 這兩個(gè)結(jié)構(gòu)對(duì)任何引入該模塊的模塊都公開(kāi)可見(jiàn)。 export default 關(guān)鍵字則注明僅僅 import 模塊時(shí)得到的結(jié)構(gòu)。 在 main.js 中,我們將導(dǎo)入的 default 命名為 mul
16、t,同時(shí)指明我們引入 add() 和 sub() 這兩個(gè)方法。箭頭函數(shù)和字典作用域 this我在這篇文章中許多地方都用到了箭頭函數(shù),它不過(guò)是另一種函數(shù)表示法。 過(guò)去我們只能這么聲明函數(shù):function printArray(arr) / 詳細(xì)操作現(xiàn)在我們也可以這么寫(xiě):const printArray = (arr) = / 詳細(xì)操作我們也可以將函數(shù)聲明寫(xiě)到一行里:const add = (a,b) = a + b上面的代碼表明我們進(jìn)行操作并返回結(jié)果。 我們也可以采納下面的語(yǔ)法返回一個(gè)對(duì)象:const create = (a,b) = ( x: a, y: b )過(guò)去會(huì)遇到搞不清 this 是什么的問(wèn)題。 考慮下面的代碼:let array = 1,2,3;function sum() this.total = 0; arr.forEach(function(item) this.total+= item; / 糟糕,this 是內(nèi)層函數(shù)的 this ) return total;上面代碼中的 this 指向 forEach 內(nèi)部函數(shù)的 this,這可不是我們想要的。 過(guò)去我們通過(guò)以下方式解決這個(gè)問(wèn)題:function sum() this.total = 0; var self = this; arr.forEach(fu
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大學(xué)生自主實(shí)習(xí)申請(qǐng)書(shū)
- 收費(fèi)的生產(chǎn)服務(wù)項(xiàng)目風(fēng)險(xiǎn)識(shí)別與評(píng)估綜合報(bào)告
- 貧困申請(qǐng)書(shū)要蓋章嗎
- 社交媒體集成對(duì)企業(yè)營(yíng)銷(xiāo)的影響
- 2024-2025學(xué)年天津市八校聯(lián)考高三(上)期末地理試卷
- DB2201-T 40-2023 殘疾人居家安養(yǎng)服務(wù)信息化建設(shè)與管理規(guī)范
- 2024-2025學(xué)年山西省三晉名校高三上學(xué)期10月考試物理試卷(解析版)
- 2023-2024學(xué)年北京市順義區(qū)高二下學(xué)期4月月考物理試卷(解析版)
- 轉(zhuǎn)正申請(qǐng)書(shū)格式工廠
- 軍人安置申請(qǐng)書(shū)
- 氧化還原反應(yīng)方程式的配平(八大配平技巧)-PPT課件
- 天津人社局解除勞動(dòng)合同證明書(shū)
- (高清正版)JJF(浙)1090—2014薄片千分尺校準(zhǔn)規(guī)范
- 2020年采購(gòu)部年度目標(biāo)計(jì)劃 采購(gòu)部工作目標(biāo)
- 陽(yáng)光分級(jí)閱讀高一上The Emperor Penguin課件
- 黑水虻幼蟲(chóng)的營(yíng)養(yǎng)成分表
- 國(guó)家農(nóng)產(chǎn)品質(zhì)量安全監(jiān)督抽查抽樣單
- 高校教師個(gè)人總結(jié)3000字?jǐn)?shù)
- 離心式壓縮機(jī)功率公式
- 柴油機(jī)突然停機(jī)的原因及判斷處理
- 參保人員就醫(yī)流程doc
評(píng)論
0/150
提交評(píng)論