當前位置:首頁 » 網頁前端 » top10前端
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

top10前端

發布時間: 2022-10-15 16:11:48

『壹』 前端常用的框架有哪些

web前端的主流框架,下面,我具體給你介紹一下:
1、Angular:Angular是一款優秀的前端JS框架,Angular有著諸多特性,最為核心的是MVW(Model-View-Whatever)、模塊化、自動化雙向數據綁定、語義化標簽、依賴注入等等。Angular是一個比較完善的前端框架,包含服務,模板,數據雙向綁定,模塊化,路由,過濾器,依賴注入等所有功能,在自定義指令後可以在項目中多次使用。
2、React:React可以非常輕松地創建用戶交互界面。為你應用的每一個狀態設計簡潔的視圖,在數據改變時React也可以高效地更新渲染界面。React為你程序編寫獨立的模塊化UI組件,這樣當某個或某些組件出現問題是,可以方便地進行隔離。
3、Vue:近幾年最火的前端框架當屬Vue.js了,Vue.js是一個構建數據驅動的Web界面的漸進式框架。Vue.js的目標是通過盡可能簡單的API實現響應的數據綁定和組合的視圖組件。Vue對模塊很友好,可以通過NPM、Bower或Duo安裝,不強迫你所有的代碼都遵循Angular的各種規定,使用場景更加靈活。
以上三個就是我給你介紹的關於web前端主流的框架,希望我的回答對你有所幫助

『貳』 學前端前景怎麼樣呢

首先,這是很有前途的工作。

衛哲曾經對大學生擇業提出這樣的建議:第一選擇新行業,第二選擇新企業,第三選擇新部門。互聯網行業相對傳統行業,算是新行業;現在創業公司很多;Web 前端工程師又是一個新的崗位。中國的 Web 前端工程師正在起步,會有很好的發展。

然後, 想一下自己是否適合和喜歡這份工作。

Web 前端工程師並不是設計師,我更傾向於將這個崗位定位為開發人員。這個崗位上每天接觸的更多的仍然是代碼、代碼、代碼。如果你喜歡的是設計,那麼應該適當調整自己的學習重點。Web 前端工程師應該是那種完美主義者,或者有一定程度潔癖,天蠍座較佳,更像程序員。術業有專攻,自己多想想自己的職業規劃。

最後,通過努力找到好的僱主。

如果你將自己定位為 Web 前端工程師,那麼去投靠對該崗位有一定認識的公司比較合適。在這樣的公司裡面,會有明確的職位說明和職責范圍,以及良好的培養計劃。在這樣的公司能夠有比較好的發展。

前端自學者存在的學習誤區:

1、所學東西可能已過時

奉為經典的東西可能已經過時,或者已經有了更好的替代者,而你獲取信息的渠道有限,消息滯後,導致學習的內容也相對滯後。

2、學習方法盲目

看書看不懂就找視頻類教程學習,覺得教程跟自己的口味不符就另尋他法,因為自己缺少對資源的辨識能力,總是在沒有清晰規劃學習線路的情況就盲目學習,導致無效學習時間過長而收獲寥寥。

3、只有理論,缺乏真實項目鍛煉

對技術的理解停留在理論層次,而缺乏真實企業項目的歷練,如果沒有相關實習或工作經歷,對前端崗位具體的責任劃分和工作流程了解不充分。

如何自學前端知識?

自學方法:

1、作為一個初學者,你必須明確系統的學習方案

我建議一定有一個指導的人,全靠自己學,放棄的幾率非常大,在你對於web前端還沒有任何概念的時候,需要一個人領進門,之後就都靠自己鑽研,第一步就是確定web前端都需要哪些內容,並且在多少時間內學完,建議時間6個月保底。

2、視頻為主,書為輔

很多初學者在學習前端的時候非常喜歡去買書,但是最後的結果是什麼?看來看去什麼都不會寫,所以在這里給大家提醒,書可以看,但是是在建立於你已經對於某個知識點有了具體操作的執行後,在用書去鞏固概念,這樣更加利於你對於知識的理解。

3、對於學習技術來講,掌握一個學習方法是非常重要的

其實對於學習web前端來講,學習方法確實很多都是相通的,一旦學習方法不對,可能就會造成「方法不對,努力白費」。其實關於這方面還是很多的,我就簡單說個例子,有的人邊聽課邊跟著敲代碼,這樣就不對,聽課的時候就專心聽,做題的時候就專心做題,這都是過來人的經驗,一定要聽。根據每個人的不同,可能學習方法也會有所出路,找到適合你自己的學習法方法是學習的前提。

前端書籍推薦:

1、《JavaScript高級程序設計(第3版) 紅皮書 》,適合有一定編程經驗的Web應用開發人員閱讀,也可作為高校及社會實用技術培訓相關專業課程的教材。

2、《JavaScript權威指南(第6版)》 犀牛書,本書不僅適合初學者系統學習,也適合有經驗的 JavaScript 開發者隨手翻閱。

3、《JavaScript DOM編程藝術 (第2版)》,本書在簡潔明快地講述JavaScript和DOM的基本知識之後,通過幾個實例演示了專業水準的網頁開發技術,透徹闡述了平穩退化等一批至關重要的 JavaScript編程原則和最佳實踐,並全面探討了HTML5以及jQuery等JavaScript庫。

4、《CSS權威指南(第三版)》,不管你是一個有經驗的Web開發人員還是一個徹底的初學者,《CSS權威指南(第3版)》都是你的CSS學習源泉。

5、《JavaScript設計模式》,適合JavaScript初學者、前端設計者、JavaScript程序員學習,也可以作為大專院校相關專業師生的學慣用書,以及培訓學校的教材。

6、《你不知道的JavaScript(上中下卷) 》,本書既適合JavaScript語言初學者了解其精髓,又適合經驗豐富的JavaScript開發人員深入學習。

7、《Vue.js權威指南》,該書內容全面,講解細致,實例豐富,適用於各層次的開發者。

學習路線:

第1階段:前端頁面重構(4周)

內容包含了:(PC端網站布局項目、HTML5+CSS3基礎項目、WebApp頁面布局項目)

第2階段:JavaScript高級程序設計(5周)

內容包含:(原生JavaScript交互功能開發項目、面向對象進階與ES5/ES6應用項目、JavaScript工具庫自主研發項目)

第3階段:PC端全棧項目開發(3周)

內容包含:(jQuery經典交互特效開發、HTTP協議、Ajax進階與PHP/JAVA開發項目、前端工程化與模塊化應用項目、PC端網站開發項目、PC端管理信息系統前端開發項目)

第4階段:移動端項目開發(6周)

內容包含:(Touch端項目、微信場景項目、應用Angular+Ionic開發WebApp項目、應用Vue.js開發WebApp項目、應用React.js開發WebApp項目)

第5階段:混合(Hybrid,ReactNative)開發(1周)

內容包含:(微信小程序開發、ReactNative、各類混合應用開發)

第6階段:NodeJS全棧開發(1周)

內容包括:(WebApp後端系統開發、一、NodeJS基礎與NodeJS核心模塊二、Express三、nosql資料庫)

視頻教程的話,B站上有很多,你可以去搜索尚學堂看看,都是免費的!

『叄』 Web前端工程師要掌握的JavaScript常見BUG及修復方法

今天小編要跟大家分享的文章是關於Web前端工程師要掌握的JavaScript常見BUG及修復方法。JavaScript看上去是一門十分簡單的語言,然而事實並不如此。它有很多容易被弄錯的細節,一不注意就導致BUG。所以今天小編就為大家分享了10個JavaScript常見的bug及修改方法,來和小編一起看一看吧!

一、錯誤的對this進行引用


在閉包或則回調中,this關鍵字的作用域很容易弄錯。舉個例子:


Game.prototype.restart=function(){


this.clearLocalStorage();


this.timer=setTimeout(function(){


this.clearBoard();//此處this指的是?


},0);


};


如果執行上面的代碼,我們會看到報錯:


UncaughtTypeError:undefinedisnotafunction


出錯的原因在於:當你調用setTimeout函數,你實際上調用的是window.setTimeout()。在setTimeout中傳入的匿名函數是在window這個對象環境下,所以this是指向window,但是window並沒有clearBoard方法。


如何解決呢?定義新的變數引用指向Game對象的this,然後就可以使用啦。


Game.prototype.restart=function(){


this.clearLocalStorage();


varself=this;//將this指向的對象綁定到self


this.timer=setTimeout(function(){


self.clearBoard();


},0);


};


或則使用bind()函數:


Game.prototype.restart=function(){


this.clearLocalStorage();


this.timer=setTimeout(this.reset.bind(this),0);//bindto'this'


};


Game.prototype.reset=function(){


this.clearBoard();//此處this的引用正確


};


二、和塊作用域(blockscope)有關的BUG


在大多數程序語言中,每一個函數塊都有一個獨立的新的作用域,但是在JavaScript中並不是。例如:


for(vari=0;i<10;i++){


/*...*/


}


console.log(i);//會輸出什麼呢?


通常在這種情況下,調用console.log()會輸出undefined或則報錯。不過呢,這里會輸出10。在JavaScript中,即使for循環已經結束,變數i依然存在,並且記錄最後的值。有些開發者會忘記這一點,然後導致許多bug。我們可以使用let而不是for來杜絕這一問題。


三、內存泄漏


你需要監控內存使用量,因為泄露很難避免。內存泄露可能由於引用不存在的對象或則循環引用導致。


·如何避免:關注對象的可訪問性(reachability)。


·可訪問的對象:


§現有的callstack任何位置可以訪問的對象


§全局對象


當一個對象可以通過引用訪問到,那麼會在內存中保存。瀏覽器的垃圾回收器僅僅會把那些不可訪問的對象回收。


四、混淆的相等判斷


JavaScript自動將所有在布爾環境下的變數類型轉換為布爾類型,但是可能導致bug。舉例:


//所有都是true


console.log(false==Ɔ');


console.log(null==undefined);


console.log(" "==0);


console.log(''==0);


//注意:下面兩個也是


if({})//


if([])//


{}和[]都是對象,他們都會被轉換為true。為了防止bug出現,推薦使用===和!==來做比較,因為不會隱式做類型轉換。


五、低效的DOM操作


在JavaScript中,你可以輕松操作DOM(添加、修改和刪除),但是開發者往往很低效地去操作。這會導致bug出現,因為這些操作非常耗費計算資源。為了解決這個問題,推薦使用文檔碎片(Document
Fragment),如果你需要操作多個DOM元素。


六、在for循環中錯誤的定義函數


舉例:


varelements=document.getElementsByTagName('input');


varn=elements.length;//假設我們有10個元素


for(vari=0;i

elements[i].onclick=function(){


console.log("元素編號#"+i);


};


}


如果我們有10個元素,那麼點擊任何一個元素都會顯示「元素編號#10」!因為在onclick被調用的時候,for循環已經結束,因此所有的i都是10。


解法:


varelements=document.getElementsByTagName('input');


varn=elements.length;//假設有10個元素


varmakeHandler=function(num){//outerfunction


returnfunction(){//innerfunction


console.log("元素編號##"+num);


};


};


for(vari=0;i

elements[i].onclick=makeHandler(i+1);


}


makeHandler在for循環執行的時候立即被調用,獲取到當前的值i+1,並且存儲在變數num中。makeHandler返回一個函數使用num變數,該函數被綁定到元素的點擊事件。


七、通過原型錯誤地繼承


開發者如果沒能正確理解繼承的原理,那麼就可能寫出有bug的代碼:


BaseObject=function(name){


if(typeofname!=="undefined"){


this.name=name;


}else{


this.name='default'


}


};


varfirstObj=newBaseObject();


varsecondObj=newBaseObject('unique');


console.log(firstObj.name);//->輸出'default'


console.log(secondObj.name);//->輸出'unique'


但是,如果我們做如下操作:


deletesecondObj.name;


那麼:


console.log(secondObj.name);//->輸出'undefined'


而我們實際上想要的結果是列印默認的name。


BaseObject=function(name){


if(typeofname!=="undefined"){


this.name=name;


}


};


BaseObject.prototype.name='default'


每一個BaseObject都繼承name屬性,並且默認值為default。此時如果secondObj的name屬性被刪除掉,通過原型鏈查找會返回正確的默認值。


varthirdObj=newBaseObject('unique');


console.log(thirdObj.name);//->輸出'unique'


deletethirdObj.name;


console.log(thirdObj.name);//->輸出'default'


八、實例方法中的無效引用


我們來實現一個簡單的構造函數用來創建對象:


varMyObject=function(){}


MyObject.prototype.whoAmI=function(){


console.log(this===window?"window":"MyObj");


};


varobj=newMyObject();


為了使用方便,我們定義變數whoAmI來引用obj.whoAmI:


varwhoAmI=obj.whoAmI;


列印出來看看:


console.log(whoAmI);


控制台會輸出:


function(){


console.log(this===window?"window":"MyObj");


}


現在我們來對比一下兩者調用的區別:


obj.whoAmI();//輸出"MyObj"(和期望一致)


whoAmI();//輸出"window"(竟然輸出了window)


當我們把obj.whoAmI賦值給whoAmI的時候,這個新的變數whoAmI是定義在全局下,因此this指向全局的window,而不是MyObj。如果我們真的要獲取對MyObj的函數的引用,需要在其作用域下。


varMyObject=function(){}


MyObject.prototype.whoAmI=function(){


console.log(this===window?"window":"MyObj");


};


varobj=newMyObject();


obj.w=obj.whoAmI;//任然在obj的作用域


obj.whoAmI();//輸出"MyObj"


obj.w();//輸出"MyObj"


九、settimeout/setlnterval函數第一個參數誤用字元串


如果你將一個字元串作為setTimeout/setTimeInterval,它會被傳給函數構造函數並構建一個新的函數。該操作流程很慢而且低效,並導致bug出現。


varhello=function(){


console.log("hello,fundebug!");


}


setTimeout("hello",1000);


一個好的替代方法就是傳入函數作為參數:


setInterval(logTime,1000);//將logTime函數傳入


setTimeout(function(){//傳入一個匿名函數


logMessage(msgValue);


},1000);


十、未能成功使用strictmode


使用strictmodel會增加很多限制條件來加強安全和防止某些錯誤的出現,如果不使用strict
mode,你就相當於少了一個得力的助手幫你避免錯誤:


·更加容易debug


·避免不小心定義了不該定義的全局變數


·避免this隱式轉換


·避免屬性名字或則參數值的重復使用


·eval()更加安全


·無效地使用delete會自動拋出錯誤


以上就是小編今天為大家分享的關於Web前端工程師要掌握的JavaScript常見BUG及修復方法的文章,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助,想要了解更多web前端相關知識記得關注北大青鳥Linux培訓官網,最後祝願小夥伴們工作順利!


作者:fundebug


原文:#/2017/11/15/top_10_bugs_and_fixing_method/


『肆』 比較厲害的外國前端程序員有哪些

1. Jon Skeet

個人名望:程序技術問答網站Stack Overflow總排名第一的大神,每月的問答量保持在425個左右。

個人簡介/主要榮譽:谷歌軟體工程師,代表作有《深入理解C#(C# In Depth)》。

網路上對Jon Skeet的評價:

「他根本不需要調試器,只要他盯一下代碼,錯誤之處自會原形畢露。」
「如果他的代碼沒有通過編譯的時候,編譯器就會道歉。」
「他根本不需要什麼編程規范,他的代碼就是編程規范。」

2. Gennady Korotkevich

個人聲望:編程大賽神童

個人簡介/主要榮譽:年僅11歲時便參加國際信息學奧林比克競賽,創造了最年輕選手的記錄。在2007-2012年間,總共取得6枚奧賽金牌;2013年美國計算機協會編程比賽冠軍隊成員;2014年Facebook黑客杯冠軍得主。截止目前,穩居俄編程網站Codeforces聲望第一的寶座,在TopCoder演算法競賽中暫列榜眼位置。

網路上對Gennady Korotkevich的評價:

「一個編程神童。」
「他太令人驚訝了,他相當於我在白俄羅斯建立了一支強大的編程隊伍」
「徹底的編程天才」

3. Linus Torvalds

個人名望:Linux之父

個人簡介/主要榮譽:

Linux和Git之父,一個開源的操作系統;
1998年EFF(電子前沿基金會)先鋒獎得主;
2000年英國計算機學會Lovelace獎章得主;
2012年千禧技術獎得主;
2014年IEEE(電氣和電子工程師協會)計算機學會先鋒獎得主;
2008年入選計算機歷史博物館名人堂;
2012年入選互聯網名人堂。

網路上對Linus Torvalds的評價:

「他簡直優秀得無與倫比。」

4. Jeff Dean

個人名望:谷歌搜索索引技術的幕後大腦。

個人簡介/主要榮譽:谷歌大規模分布式計算系統的設計師,例如:站點爬行,索引與搜索,在線廣告,MapRece,BigTable以及Spanner(分布式資料庫)。2009年進入美國國家工程院;2012年美國計算機協會SIGOPS Mark Weiser Award以及Infosys Foundation Award獎項得主。
網路上對Jeff Dean的評價:

「使數據挖掘取得了突破性發展。」
「能夠在各項工作都已安排得滿滿的情況下,仍能構思、創作、發布出MapRece以及BigTable這些令人贊嘆不已的工具。」

5. John Carmack

個人名望:第一人稱射擊游戲經典師祖《Doom》(毀滅戰士)之父

個人簡介/主要榮譽:id Software公司聯合創始人,製作了很多膾炙人口的游戲,如:《德軍司令部》(Wolfenstein 3D,又名《刺殺希特勒》)、《Doom》(毀滅戰士)、《Quake》(雷神之錘)。引領了很多計算機顯示領域的新技術,包括:adaptive tile refresh(切片適配更新)、binary space partitioning(二元空間分割)、surface caching(平面緩存);2001年進入互動藝術與科學學院名人堂;2010年收獲游戲開發者精選獎終身成就獎殊榮。

網路上對John Carmack的評價:

「製作了很多革命性的第一人稱射擊游戲,影響了一代又一代的游戲設計者。」
「他能在一周內就完成任何的基礎設計工作。」
「他是會編程的莫扎特。」

『伍』 世界工業設計公司排名

如果按照全球影響力來說,工業設計公司排名如下(不分先後):
1、加利弗(中國)工業設計公司,總部在深圳,服務蘋果CEO中國唯1中國設計公司,很多產品單款做到了100億銷售額,在國際上越來越來越有影響力,比如松下,三星,華為,雀巢等國際巨頭重點項目設計都放棄了老牌的青蛙和ideo等,都去深圳找加利弗設計。

『陸』 為什麼大型網站前端使用 PHP 後台邏輯用 Java

最近糾結了一下,如果開發一個大型的網站,我到底應該使用php還是jsp,後台到底使用php還是用java,我的選擇要麼是php要麼是java,因為我喜歡linux、unix,當然window平台也必須支持,以便哦的妹紙可以查看。這就要求用一些跨平台相當好的軟體+工具+語言,所以選擇只能是這么幾個。最後我的決定是php+java,一個前台一個後台,理由如下: php和java在開源社區的活躍度嚴重超過了其他的語言,使用人數也都是相當之多;活躍的開發工程師們能夠給我幫助,且這倆都能很好的跨平台,不用花費大量的人力物力去維護 我也做過一個物聯網的網關網站,比較復雜,當時採用的是jsp+java,復雜程度可想而知,單單說開發過程,網站部分繁瑣,每次想查看結果運行網站的時候還需要重新打包部署一下,嚴重影響了哦的開發效率,每天的時間都是在等待(因為網站比較復雜,打包部署需要浪費一些時間)。相對來說呢,php就沒有了,php靈活,好學,上手快,容易修改,容易發布,關鍵是熱部署,這個真讓哦眼睛大亮。當然看待任何事物都需要兩種眼光,php也會有缺點,比如沒有太好的開發IDE,所以拼寫錯誤很正常,且php的sql注入危險較大點,執行效率不高,安全性不如java。還有一些理由,來自知乎的米米們給的建議: Java的優點則是穩定可靠、運行效率高(尤其是JIT的出現之後差距更大了)、不容易犯錯(強類型、預編譯、必須攔截異常等等),缺點是開發和發布的效率相對較低。盡管優秀的工程師能在一定程度上改變以上的問題,但通常而言,哪能到處都是高手多如狗的夢之隊? 從MVC的層次結構上說,在一般網站項目的開發周期中,需求變更最頻繁、調整最多的是View,其次是Controller,最後是Model。這非常好理解,沒事干誰天天改數據結構?每次版本升級控制結構都要改的啦,或多或少而已。再次是兩者之間的通信,目前RPC技術已經足夠成熟,無論是Web Service/Hessian/RESTful API都能夠讓開發人員專注在功能開發上,而不需要過多的考慮異構平台的差異和通訊的細節。這也就意味著在大公司里同時應用兩種語言的方案並不會引入過多的復雜度和工作量。當然,文檔量的下限倒是因此被拔高了不少,但事實上大部分團隊對此其實都是喜聞樂見的:別每天說文檔重要但沒空了,你不寫其他同事怎麼配合? 靠近用戶的前端,使用PHP能夠更快的完成前端頻繁而瑣碎的更新,自如的應對各種需求的變化。頁面的結構調整、用戶輸入內容的基本驗證、僅只和用戶交互有關的簡單邏輯等都很適合使用PHP來開發,甚至可以通過類似Smarty等模板技術將其頁面的變動遷移到前端團隊。而基本的業務邏輯和數據的更新採用Java開發,可以有效的提高復用度、提升性能和吞吐能力、規避安全問題等。而開發效率稍有降低換來的是可維護性的提升,發布速度慢就更不是問題了,因為通常對於基礎業務邏輯的調整往往都是整體修改,並層層測試確認才能發布的。 所以,大型網站前端採用PHP後端採用Java,既好招人又好維護、系統穩定還性能高、連安全性都大大增加。代碼復用、文檔完備度居然也都改善了。讓你在以上這些好處觸手可及時,對架構師知識譜系在廣度上要求更高一些這事根本就不是個問題。 單一方案其實一樣可以做良好的隔離,PHP同樣可以提供Service,而性能問題其實很多時候是演算法和架構的問題而不是語言差異的問題。如Velocity或JSTL等也是很優秀的隔離方案。 但這些方案在高壓力下會暴露出很多問題而體現雙語言的優勢,這些在上面其實都提到,詳細說明一些很難得到改變的點: 1. PHP由於其動態腳本語言的特性,包括類、函數、常量在內都需要在每次請求周期中重復執行後才能建立運行環境;為了保證解析速度而犧牲編譯質量;應用了FastCGI但僅僅只是復用進程處理請求減少fork成本而不是像其他語言,初始化完畢後通過FastCGI的介面獲得數據並以對應介面返回數據等幾個原因,基本上已經不可能在性能上追回當初更爛現在開著JIT牌跑車的Java了。 2. 在PHP里是如此的容易犯錯而難以發現,即使你用實質上出自官方的Zend Studio,也無法改變一個事實:要保證你的程序高質量無大錯,得要有充足的經驗、足夠的嚴謹、以及——負責任的QA。淘寶的黃裳就曾經拿IDE這事開過玩笑。而玩笑背後的那個原因「缺乏中間件」最近幾年有不少的改善,主要是不少中間件的支持變得更廣泛了從而讓PHP得益,但發展的根源其實還是在C和Java社區。性能和易犯錯則是語言特性造成的技術難點,也是用來換取靈活、快捷的必要代價,很難去指望有根本的改善。 3. Java的世界裡也有JSTL、Velocity和Freemaker等,但和PHP靈活而強大的動態能力、豐富的函數和類庫、輕松的學習成本、多到令人發指的文檔相比,簡直就是渣,就是渣啊!JSTL改完了要重啟Context啊有木有?Velocity不關緩存也要重啟啊有木有?Velocity開緩存性能低下啊有木有?即使這些都不管,調整下某個數據校驗規則要改Action也要重啟有木有? 實際工作中性能問題可以通過良好的架構解決,容易犯錯的問題可以通過框架和規范以及全面的測試來解決,中間件選擇少些但其實該有的都有了,Java的靈活性一樣有不少可供考慮的解決方案哪怕是挫得要死的摘掉節點重啟,完成後重新上節點的策略。 所以,大家會看到單一語言的技術團隊也很多,這個問題的真正考慮還是更多在團隊自身的特點、積累等等。用了雙語言的,也知道自己為什麼要用這些,不用的也清楚自己的路該怎麼走。最後的最後說一句:如果你不知道自己為什麼要用雙語言方案的話,基本上你也就不需要考慮它了。從知乎上整理得到上文 我的Email:[email protected]

『柒』 Web前端工程師必會的JavaScript開發小技巧

今天小編要跟大家分享的文章是關於Web前端工程師必會的JavaScript
開發小技巧。對於Web開發或跨平台開發,JavaScript越來越流行。以前,它僅被認為是一種前端腳本語言,但現在它也越來越流行為後端腳本語言。甚至Facebook的React
Native也基於JavaScript。因此,了解JavaScript中的一些技巧無疑將是有益的,這些技巧不僅不會阻止我們編寫額外的代碼行,而且還將使我們的代碼清晰高效。下面來和小編一起看一看吧!

1、數組索引考慮一個數組[10、9、8、7、6],如果我們想將此數組的值分配給任何變數,則我們的定位方法將是consta=array
[0]。如果我們想分配多個變數,那麼繼續這樣做將很繁瑣。代碼1:舊代碼做法





輸出:


x=10


y=9


z=8


代碼2:更聰明的方式





輸出:


x=10


y=9


z=8


rest=7,6


因此,像這樣分配多個變數可以節省時間和代碼。但是,應注意,其餘部分是剩餘部分的集合數組,而不是每個項目都單獨使用。


2、定義函數想法是將一些常見或重復的任務放在一起並創建一個函數,這樣我們就可以調用該函數,而不必為不同的輸入一次又一次地編寫相同的代碼。每個人都必須在JavaScript中使用過類似的功能。代碼1:以常規形式定義功能。











UsualfunctioninJavaScript
















輸出:


UsualfunctioninJavaScript


12


代碼2:還有另一種方法將函數視為變數,而不是一個非常有用的技巧,但仍然是新事物。將函數保持在變數中,它利用像這樣的箭頭函數。














Functiontreatedas


variableinJavaScript:














輸出:

12


3、在一行中定義功能


現在,這個技巧真的很酷。如果你了解Python,則可能知道lambda函數,該函數的行為與任意函數相同,並且用一行編寫。好吧,我們不在JavaScript中使用lambda函數,但是我們仍然可以編寫單行函數。


假設我們要計算兩個數字a和b的乘積,我們可以在一行腳本中完成。我們不必專門編寫return語句,因為這種定義方式已經意味著它將自行返回輸出。














Functiontreatedas


variableinJavaScript














輸出:

12


4、布爾值


雖然每種編程語言都只有兩個布爾值True和False。JavaScript通過引入使用戶能夠創建bool的功能使它更進一步。


與True和False不同,它們通常分別稱為「Truthy」和「
Falsy」。為避免混淆,除0,False,NaN,null,「」之外的所有值均默認為Truthy。布爾的這種廣泛使用有助於我們有效地檢查狀況。





輸出:


False


True


5、過濾布爾值


有時我們可能希望過濾掉所有布爾值,例如從數組中說「Falsy」
布爾值(0,False,NaN,null,「」),這可以通過結合使用map和filter函數來完成。在這里,它使用Boolean關鍵字過濾掉Falsy值。





Input:[1,2,3,0,"Hi",False,True


]Output:[1,2,3,"Hi",True]


6、創建完全空的對象


如果要求在JavaScript中創建一個空的對象,我們的第一個轉到方法將在花括弧中使用並將其分配給變數。但這不是空白對象,因為它仍然具有JavaScript的對象屬性,例如__proto__和其他方法。


可以通過一種方法來創建沒有任何對象屬性的對象。為此,我們使用字典並將其__proto__定義為空值。





除非用戶另行定義,否則此對象將沒有默認的__proto__或其他屬性。7、截斷數組





輸出:如所見,我們必須知道要以這種方式截斷的數組的長度,否則將導致錯誤。此處的運行時間為O(k),其中k是將在數組中保留的元素數。


[10、5、7、8、3、4]


8、合並對象散布運算符()的引入使用戶可以輕松地合並到一個或多個對象,而先前通過創建一個單獨的函數來實現此操作可以實現合並。


代碼1:


·





代碼2:通過使用擴展運算符,可以輕松實現上述任務,並且代碼也很清楚。





9、條件檢查檢查和遍歷條件是每種編程語言的重要組成部分。在JavaScript中,我們這樣做是:


代碼1:





代碼2:但是,按位運算符的使用使檢查條件更加容易,並且使代碼僅一行:





10、使用正則表達式替換所有字元經常出現一種情況,每次出現一個字元或一個子字元串,但不幸的是.replace()方法僅替換一個出現的實例。我們可以通過將regex與.replace()方法配合使用來解決此問題。





輸出:


「GoolsforGools」


以上就是小編今天為大家分享的關於Web前端工程師必會的JavaScript
開發小技巧的文章,希望本篇文章能夠對正在從事web前端相關工作的小夥伴們有所幫助,想要了解更多web前端相關知識記得關注北大青鳥web培訓官網,最後祝願小夥伴們工作順利,成為一名優秀的web前端開發工程師!


文章來源:英文|#/javascript-top-10-tips-and-tricks/?ref=rp翻譯|web前端開發(ID:web_qdkf)