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

資訊專(zhuān)欄INFORMATION COLUMN

JS語(yǔ)言核心——“詞法結(jié)構(gòu)及類(lèi)型、值和變量”

Labradors / 2955人閱讀

摘要:詞法結(jié)構(gòu)字符集字符集程序是用字符集編寫(xiě)的注釋支持兩種格式的注釋單行注釋另一個(gè)注釋也是一個(gè)注釋這是一個(gè)多行注釋直接量直接量程序中直接使用的數(shù)據(jù)值標(biāo)識(shí)符和保留字標(biāo)識(shí)符就是一個(gè)名字,用來(lái)對(duì)變量和函數(shù)命名,或者用作代碼中某些循環(huán)語(yǔ)句中的跳轉(zhuǎn)位置的標(biāo)

1 詞法結(jié)構(gòu) 1.1 字符集

字符集:JS程序是用Unicode字符集編寫(xiě)的

1.2 注釋

js支持兩種格式的注釋

// 單行注釋

/* 另一個(gè)注釋 */ //也是一個(gè)注釋

/*

這是一個(gè)

多行注釋
*/

1.3 直接量

直接量literal:程序中直接使用的數(shù)據(jù)值

12 //number
true //boolean
"hello" //string
1.2 //float
[1, 2, 3] //array
var obj = {
    name: "Oli",
    age: 18
}; //object
1.4 標(biāo)識(shí)符和保留字

標(biāo)識(shí)符:就是一個(gè)名字,用來(lái)對(duì)變量和函數(shù)命名,或者用作JavaScript代碼中某些循環(huán)語(yǔ)句中的跳轉(zhuǎn)位置的標(biāo)記

保留字:JavaScript把一些標(biāo)識(shí)符拿出來(lái)用作自己的關(guān)鍵字

2 類(lèi)型、值和變量

數(shù)據(jù)類(lèi)型type:能夠表示并操作的值的類(lèi)型叫做數(shù)據(jù)類(lèi)型(type)

可擁有方法的類(lèi)型

不可擁有方法的類(lèi)型

可變類(lèi)型:可修改的,如對(duì)象和數(shù)組

不可變類(lèi)型:不可修改的,如數(shù)字、布爾值、null和undefined

變量variable:變量是一個(gè)值的符號(hào)名稱(chēng),可以通過(guò)名稱(chēng)獲得對(duì)值的引用

全局變量global variable:不在任何函數(shù)內(nèi)聲明的變量稱(chēng)為全局變量

數(shù)據(jù)類(lèi)型

原始類(lèi)型(Primitive type)

數(shù)字

字符串

布爾值

null(空)

undefined(未定義)

對(duì)象類(lèi)型(object type)

對(duì)象object:對(duì)象 (object)是屬性(property)的集合,每個(gè)屬性都由"名/值對(duì)"構(gòu)成。

無(wú)序集合:普通的javascript對(duì)象是“命名值”的無(wú)須集合

有序集合:數(shù)組array,表示帶編號(hào)的值的有序集合

函數(shù)function:是具有與它想關(guān)聯(lián)的可執(zhí)行代碼的對(duì)象,通過(guò)調(diào)用函數(shù)來(lái)運(yùn)行科執(zhí)行代碼,并返還運(yùn)算結(jié)果

構(gòu)造函數(shù)constructor:如果函數(shù)初始化(使用new運(yùn)算符)一個(gè)新建對(duì)象,我們稱(chēng)之為構(gòu)造函數(shù)

類(lèi)class:構(gòu)造函數(shù)初始化對(duì)象組成的集合

數(shù)組array類(lèi)

函數(shù)function類(lèi)

日期date類(lèi)

正則regexp類(lèi)

錯(cuò)誤error類(lèi)

2.1 數(shù)字

數(shù)字直接量(numeric literal):當(dāng)一個(gè)數(shù)字直接出現(xiàn)在javascript程序中,我們陳之為數(shù)字直接量

2.1.1 整型直接量

由于某些javascript的實(shí)現(xiàn)支持八進(jìn)制的直接量,而有些不支持,因此最好不要使用以0為前綴的整數(shù)直接量。在ECMAScript6的嚴(yán)格模式下,八進(jìn)制的直接量是明令禁止的。

2.1.2 浮點(diǎn)型直接量

語(yǔ)法:[digits][.digits][(E|e)[(+|-)]digits]

3.14
0.14
3.14e12
0.14E-21
2.1.3 算術(shù)運(yùn)算

javascript中的算術(shù)運(yùn)算在溢出(overflow)、下溢(underflow)或被零整除時(shí)不會(huì)報(bào)錯(cuò)。

溢出overflow:數(shù)字運(yùn)算結(jié)果超過(guò)了javascript中所能表示的數(shù)字上線

下溢underflow:當(dāng)運(yùn)算結(jié)果無(wú)線接近于零并比 javascript能表示的最小值還小

全局變量Infinaty和NaN在ECMAScipt3中,這兩個(gè)值是可以讀寫(xiě)的。ECMAScript5修正了這個(gè)問(wèn)題,將他們定義為只讀的

isNaN():參數(shù)是NaN或者是一個(gè)非數(shù)字值(比如字符串和對(duì)象),則返回true

isFinite():參數(shù)不是NaN、Infinty或-Infinity的時(shí)候返回true

2.1.4 二進(jìn)制浮點(diǎn)數(shù)和四舍五入錯(cuò)誤

javascript中使用實(shí)數(shù)的時(shí)候,常常只是真實(shí)值的一個(gè)近似的表示

金融計(jì)算時(shí),要使用整數(shù)“分”,而不要使用小數(shù)“元”進(jìn)行基于貨幣單位的運(yùn)算

3.1.5 日期和時(shí)間

Date()構(gòu)造函數(shù)

2.2 文本

字符串(string):是一組16位值組成的不可變的有序序列,每個(gè)字符通常來(lái)自于Unicode字符集

javascript采用UTF-16編碼的Unicode字符集

最常用的Unicode字符都是通過(guò)16位的內(nèi)碼表示,并代表字符串中的單個(gè)字符;不能表示為16位的Unicode字符則遵循UTF-16編碼規(guī)則——用兩個(gè)16位值組成一個(gè)序列(亦稱(chēng)為“代理項(xiàng)對(duì)”)表示。這意味著一個(gè)長(zhǎng)度為2的javascript字符串(兩個(gè)16位值)可能表示一個(gè)Unicode字符

2.2.1 字符串直接量

ECMAScript 3中字符串直接量必須寫(xiě)在一行;

ECMAScript 5中可以拆分成數(shù)行,每行必須以結(jié)束

如果想另起一行,則需要用轉(zhuǎn)義字符

    var x = "hello moto! 
goodby nokia!";
    console.log(x); //hello moto! goodby nokia!
    var y = "hello moto! 
goodby nokia!";
    console.log(y); 
    //hello moto! 
    //goodby nokia!
2.2.2 轉(zhuǎn)義字符

兩個(gè)轉(zhuǎn)義字符的通用版本:

xXX:十六進(jìn)制數(shù)表示Latin-1

uXXXX:u表示Unicode中的任意字碼

var x = "xA9";
console.log(x); //? A9為16進(jìn)制數(shù),表示Latin-1中的字碼
var y = "hello u000A there";
console.log(y); //表示換行符,其中u表示4個(gè)十六進(jìn)制數(shù)指定的任意Unicode字符
var z = "hello 
 there";
console.log(z); //也可以用
表示換行符

可以在這里查看Unicode字符集Unicode字符百科;

2.2.3 字符串的使用

ECMAScript 5中,字符串可以當(dāng)做只讀數(shù)組,用方括號(hào)語(yǔ)法來(lái)訪問(wèn)單個(gè)字符

2.2.4 匹配模式

JavaScript采用Perl中的正則表達(dá)式語(yǔ)法

2.3 布爾值

布爾值boolean:指代真假、開(kāi)關(guān)、是否,即保留字true和false

假值(falsy value):false以及能夠被轉(zhuǎn)換成false的值;

真值(truthy value):true以及能夠被轉(zhuǎn)換成true的值;

2.4 null和undefined

null空值:可以表示數(shù)字、字符串和對(duì)象是“無(wú)值”的

undefined空缺:表明變量沒(méi)有初始化

ECMAScript 3:undefined是可讀寫(xiě)的變量;

ECMAScript 5:undefined則是只讀的;

2.5 全局對(duì)象

全局對(duì)象的初始屬性并不是保留字,但它們應(yīng)該當(dāng)做保留字來(lái)對(duì)待

//代碼的最頂級(jí)可用this來(lái)引用全局對(duì)象
var str = "Hello World";
var global = this;
console.log(global.str);
console.log(str);
console.log(this.str);
//上面三中寫(xiě)法都是一樣的
2.6 包裝對(duì)象

字符串、數(shù)字等的屬性都是只讀的,且不能給他們定義心屬性;

當(dāng)視圖給他們定義屬性或修改屬性時(shí),修改只發(fā)生在臨時(shí)對(duì)象身上;

var s = "str";
s.len = 4;
console.log(s.len); //undefined 臨時(shí)對(duì)象的修改,隨即被“銷(xiāo)毀”

JavaScript會(huì)在必要時(shí)將包裝對(duì)象轉(zhuǎn)換成原始值:

var a = "test";
var b = 1;
var c = true;
var A = new String(a);
var B = new Number(b);
var C = new Boolean(c);
console.log(A); //String對(duì)象
console.log(B); //Number對(duì)象
console.log(C); //Boolean對(duì)象
console.log(a == A); //true
console.log(a === A); //false
console.log(typeof a); //string
console.log(typeof A); //object
2.7 不可變的原始值和可變的對(duì)象引用

JavaScript中原始值(undefined、null、布爾值、數(shù)字和字符串)與對(duì)象(對(duì)象、數(shù)組、函數(shù))不同;前者是不可變的,后者才可變;

如字符串修改后仿佛修改了原來(lái)的值,實(shí)際上是創(chuàng)建了新的字符串:

var s = "string";
s.toUpperCase();
console.log(s); //string原始值沒(méi)有變化

對(duì)象則是可變的:

var obj = {
    name: "oliver",
    age: 18
};
obj.name = "alice";
console.log(obj.name) //alice

字符串的比較只要每個(gè)索引上的值都相等且長(zhǎng)度相等就是相等,而對(duì)象包含的屬性及值都相同,但也是不相等的:

var s = "string";
var S = "string";
console.log(s === S); //True
var obj = {
    name: "oli"
};
var OBJ = {
    name: "oli"
};
console.log(obj === OBJ); //False
var a = [1,2];
var A = [1,2];
console.log(a === A); //False

對(duì)象就是引用類(lèi)型(reference type);

對(duì)象值就是引用;

對(duì)象的比較就是引用的比較,當(dāng)且僅當(dāng)它們引用同一個(gè)基對(duì)象時(shí),他們才相等:

var a = [];
var b = a;
b[0] = 1;
console.log(a[0]); //1 導(dǎo)致引用的數(shù)組也被修改
console.log(a === b); //True

如何復(fù)制數(shù)組呢:

var a = [1,2,3];
var b = [];
for (var i = 0; i < a.length; i++) {
    b[i] = a[i];
};
console.log(b.toString()); //1,2,3

//或者用concat方法
var a = [1,2,3];
var b = a.concat();
b[0] = 0;
console.log(b.toString());
console.log(a.toString());

比較兩個(gè)數(shù)組:

// var a = [1, 2, 3];
// var b = a.concat();
function compareArray(a, b) {
    if (a.length !== b.length) {
        return false;
    }
    for (var i = 0; i < a.length; i++) {
        if (a[i] !== b[i]) {
            return false;
        }
    };
    return true;
}
// console.log(compareArray(a, b)); //True
2.8 類(lèi)型轉(zhuǎn)換 2.8.1 轉(zhuǎn)換和相等性

==:等于運(yùn)算符

===:恒等運(yùn)算符

2.8.2 顯式類(lèi)型轉(zhuǎn)換

為了使得代碼可讀性增強(qiáng),需要用到顯式轉(zhuǎn)換(Number()String()等)

數(shù)字轉(zhuǎn)換成字符串

Number類(lèi)定義的toString()方法可以接收表示轉(zhuǎn)換基數(shù)(radix)的可選參數(shù):

var x = 12315;
console.log(x.toString(16)); //301b

數(shù)字轉(zhuǎn)換成浮點(diǎn)型或整型

toFixed():根據(jù)小數(shù)點(diǎn)后的指定位數(shù)將數(shù)字轉(zhuǎn)換為字符串,不使用指數(shù)計(jì)數(shù)法;

toExponential():使用指數(shù)計(jì)數(shù)法

toPrecision():根據(jù)指定的有效數(shù)字位數(shù)將數(shù)字轉(zhuǎn)換成字符串

var n = 123456.789;
console.log(n.toFixed(0)); //1234567
console.log(n.toFixed(2)); //123456.79
console.log(n.toFixed(5)); //123456.78900
console.log(n.toExponential(1)); //1.2e+5 
console.log(n.toExponential(3)); //1.235e+5 
console.log(n.toExponential(10)); //1.2345678900e+5 
console.log(n.toPrecision(4)); //1.235e+5 
console.log(n.toPrecision(8)); //123456.79 
console.log(n.toPrecision(10)); //123456.7890 

字符串轉(zhuǎn)換成數(shù)字

parseInt():解析整數(shù)

parseFloat():解析整數(shù)和浮點(diǎn)數(shù),接收第二個(gè)參數(shù)為基數(shù)

var s = "3.14 pi";
console.log(parseInt(s)); //3
console.log(parseFloat(s)); //3.14
var S = "0.123 hello";
console.log(parseInt(S)); //0
console.log(parseFloat(S)); //0.123
var x = ".12 good";
console.log(parseInt(x)); //NaN
console.log(parseFloat(x)); //0.12
var X = "$0.123 hello";
console.log(parseInt(X)); //NaN
console.log(parseFloat(X)); //NaN
2.8.3 對(duì)象轉(zhuǎn)換成原始值

toString()

valueOf()

2.9 變量聲明

ECMAScript 5嚴(yán)格模式下如果給一個(gè)沒(méi)有聲明的變量賦值會(huì)報(bào)錯(cuò):

"use strict";
x = 10; //報(bào)錯(cuò)
2.10 變量作用域

變量作用域(scope)是程序源代碼中定義這個(gè)變量的區(qū)域

2.10.1 函數(shù)作用域和聲明提升(提前)

塊級(jí)作用域(block scope)

聲明提前(hoisting):函數(shù)里聲明的所有變量(不涉及賦值)都被“提前”至函數(shù)體的頂部:

//函數(shù)內(nèi)部的局部變量遮蓋了同名的全局變量,在執(zhí)行到var的時(shí)候才會(huì)真正的被賦值
var scope = "global";
function fc () {
    console.log(scope); //undefined
    var scope = "local";
    console.log(scope); //local
}
fc();
//此處沒(méi)有同名的局部變量,所以輸出全局變量的值global
var scope = "global";
function fc () {
    console.log(scope); //global
}
fc();

正確的書(shū)寫(xiě)方式:

//上述代碼應(yīng)該寫(xiě)成:
var scope = "global";
function fc () {
    var scope;
    console.log(scope); //undefined
    scope = "local";
    console.log(scope); //local
}
fc();

先聲明再賦值或使用

2.10.2 作為屬性的變量

使用var聲明一個(gè)變量是不可配置的(不可用delete)

"use strict"
var x = 10;
this.y = 10;
delete this.y;
delete x; //報(bào)錯(cuò)

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/79007.html

相關(guān)文章

  • 2015年開(kāi)源前端框架盤(pán)點(diǎn)TOP20

    摘要:核心概念原則響應(yīng)式瀏覽器支持預(yù)處理器響應(yīng)式模塊化官網(wǎng)地址地址名稱(chēng)類(lèi)別語(yǔ)言創(chuàng)建者云適配最后更新時(shí)間年月人氣在上有描述國(guó)內(nèi)首個(gè)開(kāi)源跨屏前端框架,中文排版支持更優(yōu)本土化組件豐富。 2015年已經(jīng)過(guò)去了,作為一個(gè)前端開(kāi)發(fā)者,我覺(jué)得有必要把過(guò)去一年幫助過(guò)我或朋友們的優(yōu)秀開(kāi)源前端框架做個(gè)盤(pán)點(diǎn),希望這些項(xiàng)目能夠越來(lái)越好,幫助到更多的前端開(kāi)發(fā)者們。此榜單根據(jù)github上star數(shù)作為排名依據(jù),一個(gè)人...

    silenceboy 評(píng)論0 收藏0
  • 2015年開(kāi)源前端框架盤(pán)點(diǎn)TOP20

    摘要:核心概念原則響應(yīng)式瀏覽器支持預(yù)處理器響應(yīng)式模塊化官網(wǎng)地址地址名稱(chēng)類(lèi)別語(yǔ)言創(chuàng)建者云適配最后更新時(shí)間年月人氣在上有描述國(guó)內(nèi)首個(gè)開(kāi)源跨屏前端框架,中文排版支持更優(yōu)本土化組件豐富。 2015年已經(jīng)過(guò)去了,作為一個(gè)前端開(kāi)發(fā)者,我覺(jué)得有必要把過(guò)去一年幫助過(guò)我或朋友們的優(yōu)秀開(kāi)源前端框架做個(gè)盤(pán)點(diǎn),希望這些項(xiàng)目能夠越來(lái)越好,幫助到更多的前端開(kāi)發(fā)者們。此榜單根據(jù)github上star數(shù)作為排名依據(jù),一個(gè)人...

    summerpxy 評(píng)論0 收藏0
  • 2015年開(kāi)源前端框架盤(pán)點(diǎn)TOP20

    摘要:核心概念原則響應(yīng)式瀏覽器支持預(yù)處理器響應(yīng)式模塊化官網(wǎng)地址地址名稱(chēng)類(lèi)別語(yǔ)言創(chuàng)建者云適配最后更新時(shí)間年月人氣在上有描述國(guó)內(nèi)首個(gè)開(kāi)源跨屏前端框架,中文排版支持更優(yōu)本土化組件豐富。 2015年已經(jīng)過(guò)去了,作為一個(gè)前端開(kāi)發(fā)者,我覺(jué)得有必要把過(guò)去一年幫助過(guò)我或朋友們的優(yōu)秀開(kāi)源前端框架做個(gè)盤(pán)點(diǎn),希望這些項(xiàng)目能夠越來(lái)越好,幫助到更多的前端開(kāi)發(fā)者們。此榜單根據(jù)github上star數(shù)作為排名依據(jù),一個(gè)人...

    wh469012917 評(píng)論0 收藏0
  • node核心特性理解

    摘要:概述本文主要介紹了我對(duì)的一些核心特性的理解,包括架構(gòu)特點(diǎn)機(jī)制核心模塊與簡(jiǎn)單應(yīng)用。在此期間,主線程繼續(xù)執(zhí)行其他任務(wù)。延續(xù)了瀏覽器端單線程,只用一個(gè)主線程執(zhí)行,不斷循環(huán)遍歷事件隊(duì)列,執(zhí)行事件。 原文地址在我的博客,轉(zhuǎn)載請(qǐng)注明來(lái)源,謝謝! node是在前端領(lǐng)域經(jīng)常看到的詞。node對(duì)于前端的重要性已經(jīng)不言而喻,掌握node也是作為合格的前端工程師一項(xiàng)基本功了。知道node、知道后端的一些東西...

    huangjinnan 評(píng)論0 收藏0
  • JavaScript 簡(jiǎn)介

    摘要:簡(jiǎn)介原文鏈接簡(jiǎn)稱(chēng)是一種輕量級(jí),解釋型的編程語(yǔ)言,其函數(shù)是一等公民。標(biāo)準(zhǔn)的目標(biāo)是讓任何一種程序設(shè)計(jì)語(yǔ)言能操控使用任何一種標(biāo)記語(yǔ)言編寫(xiě)出的任何一份文檔。核心規(guī)定了如何映射基于的文檔結(jié)構(gòu),以便簡(jiǎn)化對(duì)文檔的任意部分的訪問(wèn)和操作。 JavaScript 簡(jiǎn)介 原文鏈接 JavaScript ( 簡(jiǎn)稱(chēng):JS ) 是一種 輕量級(jí),解釋型 的編程語(yǔ)言,其函數(shù)是一等公民。眾所周知,它是用于網(wǎng)頁(yè)開(kāi)發(fā)的腳...

    URLOS 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<