rendan Eich 在 1995 年創造了 JavaScript,這門語言的設計是一個“大雜燴”,融合了多種編程語言的元素和思想。這種多源性使 JavaScript 具備了靈活性和多樣性。下面詳細說明這幾個主要來源及其對 JavaScript 的影響:
### 1. 基本語法:借鑒 C 語言和 Java 語言
- **C 語言**:JavaScript 的許多基本語法來自 C 語言,包括大括號 `{}` 用于代碼塊、控制結構(如 `if`、`for`、`while`)、表達式語法及運算符等。這使得開發者可以更容易上手,因為 C 語言影響了很多其他編程語言。
- **Java 語言**:JavaScript 的一些面向對象的特性和命名習慣(如 `class`、`extends` 等)在后來的版本中也受到了 Java 的影響,雖然在早期版本中并不明顯。
### 2. 數據結構:借鑒 Java 語言
- **原始值和對象**:JavaScript 借鑒了 Java 的概念,將數據分為原始值(如 `number`, `string`, `boolean`, `null`, `undefined`, `symbol`)和對象。這種分類幫助開發者更好地理解和管理數據。
### 3. 函數的用法:借鑒 Scheme 語言和 Awk 語言
- **Scheme 語言**:JavaScript 將函數視為第一等公民(first-class citizens),這意味著函數可以存儲在變量中、作為參數傳遞以及作為返回值。這種特性來自函數式編程語言 Scheme。
- **Awk 語言**:閉包(closure)的概念也是 JavaScript 的重要特性之一,允許函數捕獲并記住其詞法作用域中的變量。Awk 語言中的函數處理方式也對這一特性有一定的影響。
### 4. 原型繼承模型:借鑒 Self 語言
- **Self 語言**:JavaScript 的原型繼承模型不同于傳統的類繼承(如 C++ 或 Java)。在 JavaScript 中,對象可以直接從其他對象繼承屬性和方法,這種機制是受 Self 語言啟發的。Self 是 Smalltalk 的一種變種,強調對象直接從其他對象繼承特性。
### 5. 正則表達式:借鑒 Perl 語言
- **Perl 語言**:JavaScript 的正則表達式語法和功能強烈借鑒了 Perl,Perl 是以強大的文本處理能力著稱的編程語言。這使得 JavaScript 在字符串操作和文本匹配方面非常強大。
### 6. 字符串和數組處理:借鑒 Python 語言
- **Python 語言**:JavaScript 中的字符串和數組處理方法(如 `split`、`join`、`slice`、`map`、`filter` 等)在設計上受到了 Python 的影響,提供了簡潔而強大的數據處理能力。
通過融合這些語言的特性,JavaScript 成為了一個靈活多變、易于學習和使用的編程語言,并隨著時間的推移不斷演進,成為現代 Web 開發的核心技術之一。
我的文章可能還有不足之處,如有不同意見,請留言討論。
romise是js中類似string,arry ,object,function,boolean等的一個類型,是一個特殊的 JavaScript 對象。
Promise是一種異步編程的解決方案,用于處理異步操作并返回結果。主要作用是解決回調函數嵌套(回調地獄)的問題,使異步操作更加清晰、易于理解和維護。
官方給出的例子:關于回調嵌套
用promise解決:
關于回調嵌套這個例子雖然簡單明了,但是沒有太多實際應用意義。實際項目開發過程中可以通過合理的設計避免這種嵌套。
又想了想,究竟什么場景下會是這種回調嵌套呢,又要求這種場景通俗易懂,很合理。
想了想,構思了個如下的例子。
1、老師讓你去宿舍找某某同學,跟他說下午到辦公室來一趟。對于辦事負責任的你來說,找到某某同學后要給老師回復一句“找到他了,下來能來”,或者“他不在,已跟他宿舍的人說了”。(回調1)
2、你來到宿舍,發現某某同學不在,有個大神在宿舍玩游戲。負責任的你必須把話帶到,于是你對大神說話。大神正在忙著王者榮耀,正在緊要關頭,手忙腳亂的飛快操作著手機,對你吼了一句“稍等!容我玩完這一局!”,你只好看著大神玩,等待玩完。(嵌套回調2,等大神有空)
3、此時,宿舍中的wifi出現問題,加之大神的手機不是“遙遙領先”,大神的游戲卡住了,大神無奈只能飆出一句國罵,然后無奈的等游戲恢復正常(嵌套回調3,等不卡)
4、經過XX秒,大神手機恢復正常(嵌套回調3完成),大神終于finish了這一局。(嵌套回調2完成)
5、大神抬起帶著血絲的眼睛,對你投來微笑。你趕緊對他說了事,大神滿口答應。你匆匆回到辦公室,回復老師。(回調1,終于完成)。
用兩個空格來代替制表符(tab) 2.嵌套元素應當縮進一次(即兩個空格)。 3.對于屬性的定義,確保全部使用雙引號,絕不要使用單引號。 4.不要省略可選的結束標簽(例如,</li> 或 </body>)。
每個頁面都添加<meta>標簽,從而通知 IE 采用其所支持的最新的模式。 <meta http-equiv="X-UA-Compatible" content="IE=Edge">
每個頁面都添加<meta>標簽,從而全部與文檔編碼一致(一般采用 UTF-8 編碼)。 <meta charset="UTF-8">
根據 HTML5 規范,在引入 CSS 和 JavaScript 文件時一般不需要指定 type屬性,因為 text/css 和 text/javascript 分別是它們的默認值。
HTML 屬性應當按照以下給出的順序依次排列,確保代碼的易讀性。
例子:
布爾型屬性可以在聲明時不賦值。XHTML 規范要求為其賦值,但是 HTML5 規范不需要。 簡單來說,就是不用賦值。 例子:
編寫 HTML 代碼時,盡量避免多余的父元素。很多時候,這需要迭代和重構來實現。請看下面的案例:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。