通常來講,完整的JavaScript包括如下幾個部分:javascript
- ECMAScript,描述了該語言的語法和基本對象;
- 文檔對象模型(DOM),描述處理網頁內容的方法和接口;
- 瀏覽器對象模型(BOM),描述與瀏覽器進行交互的方法和接口。
本文(系列)主要探討ECMAScript的特性和應用,由於平時交流習慣用JavaScript,後面都用JavaScript代替,實際上JavaScript是ECMAScript標準的實現和擴展。html
JavaScript 是一門多範式的動態語言,包含類型、運算符、標準的內置對象和方法。
關於JavaScript 的設計思路,阮一峯老師是這麼總結的:java
綜合各家所長,發展出了一門多範式的動態語言:ajax
動態:編程
var
聲明變量;多了個年份的叫法,不查資料都搞不清哪來這麼多標準。更多請查閱 ecma-262 或者 維基百科-ECMAScript。
是否是有點奇怪,爲啥沒有ES4呢,由於ES4夭折了~~聽說是BE大佬步子邁太大,組織上沒贊成,想簡單瞭解的童鞋能夠看下知乎上 尤大的回答
JavaScript使用var
、let
、const
關鍵字來進行變量聲明,除了const
聲明一個只讀常量外,其餘兩種方式並不肯定變量的類型:瀏覽器
var a=1 a={ name:'jack' } a='lucy'
在Java強類型語言中必須這麼寫:安全
int a; String b;
優勢:編程語言
缺點:函數式編程
沒法預檢查。例以下面的函數,指望是數值,傳入數值型字符串不會報錯,返回的不是預期值從而致使bug:函數
function add(a,b){ return a+b; } //指望,return 3 add(1,2) //bug,return '12' add('1',2)
弱類型的缺點容易致使bug,下降開發效率。開發建議:
強類型語言 對象結構在聲明時已經肯定好,添加字段須要修改聲明,JavaScript 的對象聲明簡單,擴展容易,寫起來更輕鬆自由。
var cat={}; cat.name='mimi'; cat.age=1;
優勢:
var list=[]; $.ajax({ ... onSuccess(res){ list=res.data; } })
缺點:
開發建議:
JavaScript中一切都是對象。
// '1' 1['toString']()
並且對象的繼承實現簡單:
開發建議:
function Cat(name,color){ this.name = name; this.color = color; } Cat.prototype.type = "貓科動物"; Cat.prototype.eat = function(){alert("吃老鼠")};
安利一個系列JavaScript 函數式編程(一)——佯真愚
軟件開發是給工程性的活動,須要遵循原則,保障代碼易用性,可閱讀性。合理的利用JavaScript的特性,經過約束和規範高效的進行軟件開發。
MDN:A re-introduction to JavaScript (JS tutorial)
阮一峯老師:Javascript誕生記
雲棲社區:《JavaScript核心概念及實踐》——1.2 JavaScript語言特性
維基百科:JavaScript、ECMAScript