国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

《JavaScript 權(quán)威指南》讀書筆記 1 - 簡介

sydMobile / 1206人閱讀

摘要:原文第一章主要介紹的大概情況基本語法。通過和來引用對象屬性或數(shù)組元素的值就構(gòu)成一個(gè)表達(dá)式。

原文:https://keelii.github.io/2016/06/16/javascript-definitive-guide-note-0/

第一章 主要介紹 JavaScript 的大概情況、基本語法。之前沒有 JavaScript 基礎(chǔ)的看不懂也沒關(guān)系,后續(xù)章節(jié)會有進(jìn)一步的詳細(xì)說明,我會通讀一遍 《JavaScript 權(quán)威指南》,然后根據(jù)個(gè)人的理解整理出來我認(rèn)為重要的核心概念,同時(shí)我也會參考原版英文版 JavaScript The Definitive Guide,取一些關(guān)鍵性、重要的單詞做補(bǔ)充

中文排版指南遵守 中文文案排版指北,歡迎批評批正

JavaScript 簡介

JavaScript 是面向 web 的編程語言,是一門 高階的(high-level)、動態(tài)的(dynamic)、弱類型的(untyped)解釋型(interpreted)編程語言,適合面向?qū)ο螅╫op)和函數(shù)式的(functional)編程風(fēng)格。JavaScript 語法源自 Java 和 C,一等函數(shù)(first-class function)來自于 Scheme,它的基于原型繼承來自于 Self

JavaScript 的版本

JavaScript 語言規(guī)范由 ECMA 國際發(fā)布,版本號一般叫做 ECMAScript x,如:ECMAScript 3, ECMAScript 5, ECMAScript 6,簡稱 ES x

Mozilla 發(fā)布的 JavaScript 版本一般叫做 JavaScript x.x,如:JavaScript 1.3, JavaScript 1.5

Micorsoft 發(fā)布的 JavaScript 版本一般叫做 JScript

可以這么說 「Mozilla 和 Micorsoft 開發(fā)的瀏覽器中 JavaScript內(nèi)核一般都實(shí)現(xiàn)了某個(gè) ECMAScript 版本的規(guī)范」

JavaScript 語言核心有很多 API,比如:針對字符串、數(shù)組、正則、日期。但這些通常不包括輸入輸出 API(類似網(wǎng)絡(luò)、存儲、圖形相關(guān)的特性),輸入輸出 API 一般是由 JavaScript 的宿主環(huán)境(host environment)提供的,通常是瀏覽器

JavaScript 語言核心 變量/賦值

快速預(yù)覽下 JavaScript 變量的用法

// 雙斜線之后內(nèi)容是單行注釋
/* 這是多行注釋 */

// 變更是表示值的一個(gè)符號名字,通過 var 關(guān)鍵字聲明
var x;              // 聲明一個(gè)變量 x

// 值可以通過等號賦值給變量
x = 0               // 現(xiàn)在變量 x 的值為 0
x                   // => 0 通過變量獲取其值

// JavaScript 支持多種數(shù)據(jù)類型
x = 1;              // 數(shù)字
x = 0.01;           // 整數(shù)和實(shí)數(shù)都是數(shù)字(number)類型
x = "hello world"   // 字符串
x = "JavaScript";   // ...
x = true;           // 布爾值
x = false;          // ...
x = null;           // 是一個(gè)特殊的值,意思是「空」
x = undefined;      // 和 null 非常累似
對象/數(shù)組

JavaScript 中兩個(gè)非常重要的數(shù)據(jù)類型是對象和數(shù)組

// 對象是名/值對的集合,或字符串到值映射的集合
var book = {                // 對象由花括號括起來
    topic: "JavaScript",    // book 對象的屬性 topic 的值是 "JavaScript"
    fat: true
};

// 通過「.」或「[]」來訪問對象屬性
book.topic                  // => "JavaScript"
book.["fat"]                // => true
book.author = "Flanagan"    // 通過賦值給 book 對象創(chuàng)建一個(gè)新屬性 author

// JavaScript 數(shù)組
var primes = [2, 3, 5, 7];
primes[0]                   // => 2 通過數(shù)組下標(biāo)訪問第一個(gè)元素
primes.length               // => 4 數(shù)組中元素的個(gè)數(shù)
primes[4] = 9               // => 9 添加新元素
primes[6] = 11              // => 11 此時(shí)數(shù)組變成 [2, 3, 5, 7, 9, undefined, 11], 長度也變?yōu)?7

// 對象數(shù)組
var points = [
    { x: 0, y: 0 },
    { x: 1, y: 1 }
];

// 數(shù)組對象
var data = {
    listA: [1, 3, 5],
    listB: [2, 4, 6]
};
表達(dá)式/運(yùn)算符

通過方括號定義數(shù)組元素和通過花括號定義對象屬性名和值的語法稱為 初始化表達(dá)式(initializer expression),表達(dá)式是 JavaScript 中的一個(gè)短語,這個(gè)短語可以通過運(yùn)算得出一個(gè)值。通過「.」和「[]」來引用對象屬性或數(shù)組元素的值就構(gòu)成一個(gè)表達(dá)式。上面的代碼中注釋中箭頭(=>)后的值就是表達(dá)式的運(yùn)算結(jié)果

JavaScript 中最常見的表達(dá)式寫法就是像下面代碼一樣使用運(yùn)算符(operator),運(yùn)算符作用于操作數(shù),生成一個(gè)新的值

// 最常見的是算術(shù)運(yùn)算符
3 + 2                     // => 5 加法
3 - 2                     // => 1 減法
3 * 2                     // => 6 乘法
3 / 2                     // => 1.5 除法
points[1].x - points[0].x // => 1 復(fù)雜的操作數(shù)運(yùn)算
"3" + "2"                 // => "32" 字符串連接

                          // 運(yùn)算符簡寫形式
var count = 0;
count++;                  // 自增1
count--;                  // 自減1
count += 2;               // 自加2, 相當(dāng)于 count = count + 2
count *= 3;               // ...
count                     // => 6 變量名本身也是表達(dá)式

var x = 2, y = 3
x == y                    // => false
x != y                    // => true
x < y                     // => true
x <= y                    // => true
x == y                    // => false
"two" == "three"          // => false
"two" > "three"           // => true "tw" 在字母表中的索引大于 "th"
false == (x > y)          // => true

                          // 邏輯運(yùn)算符
(x == 2) && (y == 3)      // true
(x > 2) && (y < 3)        // false
!(x == y)                 // true

如果 JavaScript 中的「短語」是表達(dá)式,那么整個(gè)句子就稱做 語句(statement),以分號結(jié)束的行都是一條語句。語句和表達(dá)式有很多共同之處

粗略了講,表達(dá)式僅僅計(jì)算出一個(gè)值并不進(jìn)行其它操作,不會改變程序的運(yùn)行狀態(tài),而語句并不包含一個(gè)值(或者說它包含的值我們并不關(guān)心),但它們改變了程序運(yùn)行狀態(tài)

函數(shù)

函數(shù)是帶有名稱(named)和參數(shù)的 JavaScript 代碼片段,可以一次定義多次調(diào)用

function plus1(x) {        // 定義了一個(gè)名為 plus1 的函數(shù),帶有參數(shù) x
    return x + 1;          // 返回一個(gè)比傳入?yún)?shù)大 1 的數(shù)值
}                          // 函數(shù)代碼塊是由花括號包裹起來的部分
plus1(3)                   // => 4 函數(shù)調(diào)用結(jié)果為 3+1

var square = function(x) { // 函數(shù)是一種值,可以賦值給變量
    return x * x;
};

square(plus1(3))           // => 16 在一個(gè)表達(dá)式中調(diào)用兩個(gè)函數(shù)

當(dāng)函數(shù)和對象合寫在一起時(shí),當(dāng)函數(shù)就變成了「方法」(method):

// 當(dāng)函數(shù)賦值給對象的屬性,我們稱為「方法」,所有 JavaScript 對象都含有方法
var a = [];             // 創(chuàng)建一個(gè)空數(shù)組
a.push(1, 2, 3);        // 調(diào)用數(shù)組的添加元素方法
a.reverse();            // 調(diào)用數(shù)組的次序反轉(zhuǎn)方法

// 自定義方法
points.dist = function() {
    var p1 = this[0];
    var p2 = this[1];
    var a = p2.x - p1.x;
    var b = p2.y - p1.y;
    return Math.sqrt(a*a + b*b) // 勾股定理,用 Math.sqrt 來計(jì)算平方根
}
points.dist();                  // => 求得兩個(gè)點(diǎn)之間的距離
面向?qū)ο?/b>

JavaScript 中的面向?qū)ο筇匦院蛡鹘y(tǒng)語言的很大的區(qū)別,下面展示一個(gè)類用來表示 2D 平面中的幾何點(diǎn),這個(gè)類實(shí)例化后的對象有一個(gè)名為 r() 的方法,可以計(jì)算該點(diǎn)到原點(diǎn)的距離:

function Point(x, y) {
    this.x = x;
    this.y = y;
}

// 通過給構(gòu)造函數(shù)的 prototype 對象賦值,來給 Point 對象定義方法
Point.prototype.r = function() {
    return Math.sqrt(this.x * this.x + this.y * this.y)
};

// 使用 new 關(guān)鍵字和構(gòu)造函數(shù)來創(chuàng)建一個(gè)實(shí)例 p
var p = new Point(1, 1);

// Point 的實(shí)例對象 p(以及所有 Point 的實(shí)例對象)繼承了方法 r()
p.r()               // => 1.414...
客戶端的 JavaScript 嵌入到 HTML 中的 JavaScript

JavaScript 代碼可以通過

正常 HTML 段落

使用 JavaScript 操作 DOM

JavaScript 可以通過瀏覽器提供的 DOM API 來操作 HTML 元素

// 調(diào)用 debug 傳入字符串,JavaScript 會動態(tài)創(chuàng)建一個(gè) HTML 節(jié)點(diǎn)并字符串內(nèi)容顯示其中
function debug(msg) {
    var log = document.getElementById("debuglog");

    if (!log) {
        log = document.createElement("div");
        log.id = "debuglog";
        log.innerHTML = "

Debug Log

"; document.body.appendChild(log); } var pre = document.createElement("pre"); var text = document.createTextNode(msg); pre.appendChild(text); log.appendChild(pre); } debug("this is debug message");
使用 JavaScript 操作 CSS 樣式

JavaScript 可以通過瀏覽器提供的 DOM API 來操作 HTML 元素,從而影響 CSS 樣式

// 設(shè)置元素的 CSS 屬性 display/visiblity
function hide(el, reflow) {
    if (reflow) {
        el.style.display = "none";    // 隱藏元素
    } else {
        el.style.visibility = "hide"; // 隱藏元素,但元素仍然占空間
    }
}
// 設(shè)置 HTML 元素的 class 屬性,class 屬性可以是多個(gè)(空格分割),如:
function highlight(e) { if (!e.className) { e.className = "hilite"; } else { e.className += " hilite"; } }
使用 JavaScript 處理事件

JavaScript 通過注冊事件函數(shù)來定義文檔/用戶的行為,比如:點(diǎn)擊,鼠標(biāo) hover 等

給 HTML 元素添加事件處理程序的一種方法是直接給 HTML 元素添加行內(nèi)的 on[event name],比如給按鈕綁定點(diǎn)擊事件



Hello


World

另外一種方法是調(diào)用元素的 添加事件處理函數(shù),通常是 addEventListener 或 attachEvent(IE專用)

// 注冊 onload 事件,效果和在 HTML 上寫 onload 是一樣的
// 不過只有部分 HTML 元素支持,比如: img 標(biāo)簽的 onload
window.onload = function() {
    var images = document.getElementsByTagName("img");

    for (var i = 0, l = images.length; i < l; i++) {
        var image = images[i];
        if ( image.addEventListener )
            image.addEventListener("click", hide, false);
        else
            image.attachEvent("onclick", hide);
    }

    function hide(event) { event.target.style.visibility = "hidden"; }
}
使用 jQuery 庫

使用 jQuery 類庫會使 DOM 操作、事件綁定等操作非常方便,而且不用擔(dān)心瀏覽器兼容問題(JavaScript api 層面的兼容)

function debug(msg) {
    var $log = $("#debuglog");
    if (!$log.length) {
        log = $("

Debug Log

"); log.appendTo(document.body) } log.append($("
").text(msg))
}
引用

ECMAScript https://zh.wikipedia.org/wiki/ECMAScript

JScript https://zh.wikipedia.org/wiki/JScript

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/79764.html

相關(guān)文章

  • MongoDB權(quán)威指南讀書筆記(一)

    摘要:如果沒有找到找到符合條件的文檔,就會以這個(gè)條件和更新文檔為基礎(chǔ)新建一個(gè)新的文檔。使用它可以快速方便的對文檔進(jìn)行更新。更新多個(gè)文檔默認(rèn)情況下,文檔的更新只針對第一個(gè)匹配到的文檔,多個(gè)條件符合時(shí),其它文檔不會改變。 what is MongoDB ? 面向文檔的數(shù)據(jù)庫 不再有行的概念,不再有預(yù)定義模式 易于拓展 豐富的功能 索引 聚合 特殊的集合類型 文件存儲 高性能 可以一個(gè)示...

    Barrior 評論0 收藏0
  • MongoDB權(quán)威指南讀書筆記(一)

    摘要:如果沒有找到找到符合條件的文檔,就會以這個(gè)條件和更新文檔為基礎(chǔ)新建一個(gè)新的文檔。使用它可以快速方便的對文檔進(jìn)行更新。更新多個(gè)文檔默認(rèn)情況下,文檔的更新只針對第一個(gè)匹配到的文檔,多個(gè)條件符合時(shí),其它文檔不會改變。 what is MongoDB ? 面向文檔的數(shù)據(jù)庫 不再有行的概念,不再有預(yù)定義模式 易于拓展 豐富的功能 索引 聚合 特殊的集合類型 文件存儲 高性能 可以一個(gè)示...

    sixleaves 評論0 收藏0
  • 讀書筆記:編寫高質(zhì)量javascript的68個(gè)方法

    摘要:第條盡量少使用全局對象避免聲明全局變量盡量聲明局部變量避免對全局變量增加屬性第條始終聲明局部變量第條避免使用語句第條熟練使用閉包的函數(shù)值包含了比調(diào)用他們時(shí)執(zhí)行所需要的代碼還要更多的信息。那些在其所涵蓋的作用域內(nèi)跟蹤變量的函數(shù)稱為閉包。 書還沒看完。一遍看,一遍寫讀書筆記。 這本書的序是JavaScript之父Brendan Eich寫的,作者是JavaScript標(biāo)準(zhǔn)化委員會專家。可想...

    Vicky 評論0 收藏0
  • Effective JavaScript讀書筆記(一)

    摘要:如果為假值,不傳或者傳入,函數(shù)都會返回但是,傳入這個(gè)值是完全有可能的,所以這種判斷形勢是不正確的或者使用來判斷也可以原始類型優(yōu)于封裝類型對象擁有六個(gè)原始值基本類型布爾值,數(shù)字,字符串,,和對象。 作為一個(gè)前端新人,多讀書讀好書,夯實(shí)基礎(chǔ)是十分重要的,正如蓋樓房一樣,底層穩(wěn)固了,才能越壘越高。從開始學(xué)習(xí)到現(xiàn)在,基礎(chǔ)的讀了紅寶書《JavaScript高級程序設(shè)計(jì)》,犀牛書《JavaScri...

    zhoutao 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<