1.優先使用===,而不是==
JavaScript使用兩種相等性運算子: ===|!==和==|!=.通常認為做比較的最佳實踐是使用前一組運算符.
"若兩個運算元的類型和值相同,那麼===比較的結果為真,!==比較的結果為假." JavaScript語言精粹
然而,如果使用==和!=,當比較不同類型的操作數時,你就會碰到問題啦.在這種情況下,這組操作符會嘗試對操作數的值做無用的強制轉換.
2.Eval就是糟糕的代名詞
#對於那些不熟悉JavaScript的人來說,函數"evel"讓我們能夠訪問JavaScript編譯器,我們可以透過傳遞一個字串參數給"eval"來得到該字串執行的結果.
這不僅會大大降低你的腳本的效能.也會造成一個巨大的安全隱患,因為這富裕傳遞進來的純文本太多的能力,要盡可能地避免eval函數的使用.
3.不要懶手
奇數上來說,你確實可能僥倖地省略多數花括號和分號.大多數瀏覽器都能夠正確的節水如下程式碼片段:
if(someVarianbleExists) x = false
然而再考慮一下這段程式碼:
if(someVariableExists) x=false anotherFunctionCall();
可能會有人認為上一段程式碼等價於:
if(someVariableExists){ x = false; anotherFunctionCall();
你應該也注意到了,代碼中縮進模仿了花括號的功能,毋庸置疑,這是非常恐怖的做法,無論如何都應該避免.唯一可以省略花括號的時候是在一行式的語句中,但即使這種情況,也是很有爭議的.
if(2 + 2 ===4) return"nicely done";
始終要想著以後
如果以後的某個時候,你需要在這種if語句中增加更多的命令,那該怎麼辦呢?沒法子,你就只能重寫這款代碼了.處理這個問題的底線是對於省略寫法保持謹慎.
#4.使用JS Lint
JSLint是Douglas Crockford 寫的一個調試器,簡單地將你的腳本拷貝進去,它就會快速地刀面你的程式碼中任何明顯的問題和錯誤.
"JSLint取得一份JavaScript源碼,然後掃描程式碼。如果發現問題,就會回傳一條訊息描述這個問題以及這個問題在源碼中的大致位置。問題雖然經常是語法錯誤,卻不一定是。JSLint也會查看一些風格習慣以及結構問題。你不會反一些愚蠢的錯誤.
5.將腳本至於頁面的底部
這條技巧在本系列前面的文章中也推薦過.因為它在此處也非常合適(As it's highly appropriate though),所以我將那段信息直接粘貼在這裡.
記住--這條最佳實踐的主要目標是近可能快速地為用戶加載頁面.當加載一個腳本時,瀏覽器直到整個腳本文件全部加載完畢才能繼續.因此,用戶必須等上更長的時間才能注意到任何的進度.
如果JS文件的目的僅僅是增加功能--例如.在點擊某個按鈕後--那麼就將那些文件放在底部,body結束標籤之前吧,這絕對是一個最佳實踐.
更好的做法
<p>And now you know my favorite kinds of corn. </p> <script type="text/javascript" src="path/to/file.js?1.1.11"> </script> <script type="text/javascript" src="path/to/anotherFile.js?1.1.11"></script> </body> </html>
6.在For語句之外宣告變數
當執行一個冗長的'for'語句之時,僅僅讓解釋引擎做必須幹的活吧.
例如:
糟糕的做法:
for(var i = 0; i < someArray.length; i++) { var container = document.getElementById('container'); container.innerHtml += 'my number: ' + i; console.log(i); }
注意上面程式碼片段中的每次迭代都需要檢查數組的長度.並且每次都要遍歷DOM樹找到'container'元素--效率多低啊!! !
更好的做法
ar container = document.getElementById('container'); for(var i = 0, len = someArray.length; i < len; i++) { container.innerHtml += 'my number: ' + i; console.log(i); }
7.建立字串的最快方式
當需要遍歷一個數組或物件之時,不要總是使用你信手拈來的'for'語句,創造性地找個能夠完成工作的最快速的方案.
var arr = ['item 1', 'item 2', 'item 3', ...]; var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';
“我不會以測試基準來煩你;你只須相信我(或者自己去測試一下)—這是目前為止最快的方式! 」
使用原生方法(例如join()),不用管抽象層面背後發生了什麼,通常會比任何非原生方法快得多。
8.減少全域變數
透過將全域的東西封裝進單一命名空間,能夠大幅降低與其他應用程式,元件,程式碼庫互動混亂的機率.
var name = 'jeffrey'; var lastname = 'way'; function doSomething(){...} console.log()
更好的做法
var DudeNameSpace = { name:'Jeffrey'; lastname:'way', doSometing: function(){...} } console.log(DudeNameSpace.name);
9 .註解你的程式碼
一開始看起來似乎沒有必要,但請相信我,你將會想盡可能好地註解你的程式碼.當你幾個月後再次回到專案,會發生什麼呢?發現你根本沒法輕鬆的及其當初對每一行代碼的想法.或者,如果你的某個同事需要修改你的代碼,那又會怎麼樣呢?始終,一直記著註釋你代碼的重要部分吧.
10.擁抱漸進增強
總是考慮到如何處理JavaScript禁用的情況.也許你會想"大多數我網頁的閱讀器都是啟用JavaScript的,因此我不擔心這個問題.然而,這回事一個巨大的錯誤.
你曾花时间去看过关闭JavaScript后你的漂亮的花动态哦是什么样么?也许他会完全破坏你的站点.按照以往经验,设计你的站点是应假设将会禁用JavaScript,那么,一旦你这样做了,那么开始渐进的增强你的网页布局吧!
11.不要传递字符串给"SetInterval"或"SetTimeout"
考虑一下如下代码:
etInterval( "document.getElementById('container').innerHTML += 'my new number: ' + i", 3000 );
这段代码不仅抵消,而且其行为与"eval"函数相同.永远不要传给字符串给SetInterval和SetTimeout.相反,颍川地一个函数名.
setInterval(someFunction, 3000);
12.不要使用"with"语句
乍一看,'with'语句似乎是个聪明的想法.基本概念是他们能够为深度嵌套对象提供一种简写方式,例如...
with (being.person.man.bodyparts) { arms = true; legs = true; }
取代如下写法
being.person.man.bodyparts.arms = true; being.person.man.bodyparts.legs = true;
很不幸,经过一些测试,会发现这种简写在设置新成员时表现非常糟糕.作为替代.你应该使用var.
var o = being.person.man.bodyparts; o.arms = true; o.legs = true;
13 使用{}而不是new Object()
JavaScript中有很多种穿件对象的方式.也许更传统的方式是使用''new''构造器.像这样:
var o = new Object(); o.name = 'Jeffrey'; o.lastname = 'Way'; o.someFuncion = function() { console.log(this.name); }
然而,这种方式因其行为并不是我们所想的那样而被认为是"糟糕的实践".相反,我推荐你使用更健壮的对象字面方法.
更好的写法
var o = { name: 'Jeffrey', lastName: 'Way', someFunction: function() { console.log(this.name); } };
注意如果你只是想简单地创建个空对象,{}就派上用场了.
var o = {};
对象字面量使我们能够编写支持很多特性的代码,并对代码的实现者来说代码仍然相对直观,不需要直接调用构造器或维护传递给函数的参数的正确顺序,等等.
14.使用[]而不是New Array()
这同样适用于创建一个新数组
过去的写法
var a = new Array(); a[0] = 'Joe'; a[1] = 'Plumber';
更好的写法 var a = ['Joe', 'Plumber'];
Javascript中一个常见的错误是需要数组时使用对象或需要对象时使用数组,规则很简单:当属姓名是小的连续整数时,你应该使用数组,否则,使用对象
15.一长串变量? 省略''var''关键字,使用逗号替代
var someItem = 'some string'; var anotherItem = 'another string'; var oneMoreItem = 'one more string';
更好的写法
var someItem = 'some string', anotherItem = 'another string', oneMoreItem = 'one more string';
相当的不言自明,我不知道这里是否有任何真正的速度提升,但是它使你的代码更加简洁了.
16.始终,始终使用分号
技术上来说,大多数浏览器都允许你省略一些分号
var someItem = 'some string' function doSomething() { return 'something' }
话虽如此,但这是一种非常糟糕的做法,可能导致更大的问题,问题查找起来也更困难
更好的写法
var someItem = 'some string'; function doSomething() { return 'something'; }
18.For in 语句
遍历对象内的成员时,你也会得到方法函数,为了解决这个问题,应始终将你的代码包装在一个if语句中来过滤信息
for(key in object) { if(object.hasOwnProperty(key)) { ... then do something... } }
19.使用firebug的''Timer''特性来优化代码
需要一种快速简单地方法来检测一个操作花费多长时间么?
使用Firebug的timer特性记录结果
function TimeTracker() { console.time("MyTimer"); for(x=5000; x > 0; x--){} console.timeEnd("MyTimer"); }
20.读书 面向对象的JavaScript
JavaScript:语言精粹
学习jQuery 1.3
学习JavaScript
21.自执行函数(self-executing functions)
相比调用函数,当页面加载或调用父函数时,让函数自动执行会简单些.简单地将你的函数包装在圆括号内,并添加额外的一对圆括号,其本质上就调用了这个函数
(function doSomething() { return { name: 'jeff', lastName: 'way' }; })();
22.原始(raw)javascript代码的执行速度始终快于使用代码库
Javascript代码库,如jQuery和mootools,能够为你节省大量的编码时间--特别是使用ajax操作.话虽如此,适中谨记代码库的执行速度适中是比不上原始JavaScript代码的(假设了代码的正确性)
jQuery的each方法来做遍历非常赞,但使用原生for语句适中会快一些
23.crockford的json.parse
虽然JavaScript 2 应该有一个内置的json解析器,但我们仍旧需要自己实现.Douglas Crockford,JSON的创造者,已经实现了一个解析器供你使用。可以从这里下载。
简单地导入该脚本,你就能获得一个新的json全局对象,用于解析你的.json文件.
var response = JSON.parse(xhr.responseText); var container = document.getElementById('container'); for(var i = 0, len = response.length; i < len; i++) { container.innerHTML += '<li>' + response[i].name + ' : ' + response[i].email + '</li>'; }
24.删除''language''
在script标签内最常见的language属性,现在已经不用了
以上是javascript初學者實踐使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6
視覺化網頁開發工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版