日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript基础---语言基础(1)

發布時間:2025/4/9 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript基础---语言基础(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面:

通過四篇博客把JS基礎中的基礎整理一下,方便自己查閱,這些內容對于實際項目開發中也許并不會在意,但是作為JS的語言基礎,自覺還是應該熟悉。在完成這三篇博客(JavaScript基礎---語言基礎)之后,JS基礎部分的博客也算告一段落。接下來的一段時間,想把最近看的一些書分類整理一下(包括CSS,JS,AJAX,jQuery源碼,D3,Nodejs基礎等內容)。

?

語法、關鍵保留字及變量

學習要點:

1.語法結構

2.關鍵字和保留字

3.變量

?

任何語言的核心都必然會描述這門語言最基本的工作原理。而JavaScript的語言核心就是ECMAScript,而目前用的最普遍的是第3版。

一.語法構成

?

區分大小寫

ECMAScript中的一切,包括變量、函數名和操作符都是區分大小寫的。例如:text和Text表示兩種不同的變量。

?

標識符

所謂標識符,就是指變量、函數、屬性的名字,或者函數的參數。標識符可以是下列格式規則組合起來的一或多個字符:

1.第一字符必須是一個字母、下劃線(_)或一個美元符號($)。

2.其他字符可以是字母、下劃線、美元符號或數字。

3.不能把關鍵字、保留字、true、false和null作為標識符。

例如:myName、book123等

?

直接量(字面量literal)

所有直接量(字面量),就是程序中直接顯示出來的數據值。

100? ?????? ?????? ?????? //數字字面量

'張三'????? ?????? ?????? //字符串字面量

false ?????? ?????? ?????? //布爾字面量

/js/gi?????? ?????? ?????? //正則表達式字面量

null? ?????? ?????? ?????? //對象字面量

?

在ECMAScript第3版中,像數組字面量和對象字面量的表達式也是支持的,如下:

{x:1, y:2}?????? ?????? //對象字面量表達式

[1,2,3,4,5]????? ?????? //數組字面量表達式

?

二.關鍵字和保留字

?

ECMAScript-262描述了一組具有特定用途的關鍵字,一般用于控制語句的開始或結束,或者用于執行特定的操作等。關鍵字也是語言保留的,不能用作標識符。

?

ECMAScript全部關鍵字

?

break

else

new

var

case

finally

return

void

catch

for

switch

while

continue

function

this

with

default

if

throw

?

delete

in

try

?

do

instanceof

typeof

?

?

ECMAScript-262還描述了另一組不能用作標識符的保留字。盡管保留字在JavaScript中還沒有特定的用途,但它們很有可能在將來被用作關鍵字。

?

ECMAScript-262第3版定義的全部保留字

?

abstract

enum

int

short

boolean

export

interface

static

byte

extends

long

super

char

final

native

synchronized

class

float

package

throws

const

goto

private

transient

debugger

implements

protected

volatile

double

import

public

?

?

?

三.變量

ECMAScript的變量是松散類型的,所謂松散類型就是用來保存任何類型的數據。聲明變量時要使用var操作符(var是關鍵),后面跟一個變量名(變量名是標識符)。

var box;

alert(box); ? ? ?//undefined

?

這句話定義了box變量,但沒有對它進行初始化(也就是沒有給變量賦值)。這時,系統會給它一個特殊的值 -- undefined(表示未定義)

var box= '張三';

alert(box);

?

所謂變量,就是可以初始化后可以再次改變的量。ECMAScript屬于弱類型(松散類型)的語言,可以同時改變不同類型的量。(PS:雖然可以改變不同類型的量,但這樣做對于后期維護帶來困難,而且性能也不高,導致成本很高!)

var boxString = '張三';

boxString = 100; ? ? ? ? //不建議這樣做!

alert(boxString);

?

重復的使用var聲明一個變量,只不過是一個賦值操作,并不會報錯。但這樣的操作沒有任何必要。

var box= '張三';

var box= 'Alex'; ? ? //這樣做完全沒有必要!

?

還有一種變量不需要前面var關鍵字即可創建變量。這種變量和var聲明的變量有一定的區別和作用范圍(全局范圍)。

box= '張三'; ? ? ? ?//沒有var關鍵字

?

當你想聲明多個變量的時候,可以在一行或者多行操作。

var box= '張三'; var age= 100;????? //分號隔開

?

而當你每條語句都在不同行的時候,你可以省略分號。(PS:這是ECMAScript支持的,但絕對是一個非常不好的編程習慣,切記不要這樣做)。

var box= '張三'

var age= 100

alert(box)

?

可以使用一條語句定義多個變量,只要把每個變量(初始化或者不初始化均可)用逗號分隔開即可,為了可讀性,每個變量,最好另起一行,并且第二變量和第一變量對齊(PS:這些都不是必須的,只是一種良好的編程習慣)。

var box= '張三',

? ? ?age = 28,

? ? ?height;

?

?

??

?數據類型

學習要點:

1.typeof操作符

2.Undefined類型

3.Null類型

4.Boolean類型

5.Number類型

6.String類型

7.Object類型

?

?

ECMAScript中有5種簡單數據類型:Undefined、Null、Boolean、Number和String。還有一種復雜數據類型——Object

ECMAScript不支持任何創建自定義類型的機制,所有值都成為以上6中數據類型之一。

一.typeof操作符

typeof操作符是用來檢測變量的數據類型。對于值或變量使用typeof操作符會返回如下字符串

?

字符串

描述

undefined

未定義

boolean

布爾值

string

字符串

number

數值

object

對象或null

function

函數

?

var box = '張三';

alert(typeof ?box);

alert(typeof ?'張三');

?

typeof操作符可以操作變量,也可以操作字面量。雖然也可以這樣使用:typeof(box),但是typeof是操作符而非內置函數

PS:函數在ECMAScript中是對象,不是一種數據類型。所以,使用typeof來區分function和object是非常有必要的。

??

二.Undefined類型

Undefined類型只有一個值,即特殊的undefined。

在使用var聲明變量,但沒有對其初始化時,這個變量的值就是undefined。

var box;

alert(box);

PS:我們沒有必要顯式的給一個變量賦值為undefined,因為沒有賦值的變量會隱式的(自動的)賦值為undefined;而undefined主要的目的是為了用于比較,ECMAScript第3版之前并沒有引入這個值,引入之后為了正式區分空對象(null)與未經初始化(undefined)的變量

?

未初始化的變量與根本不存在的變量(未聲明的變量)也是不一樣的。

var box;

alert(age);?? //age is not defined

PS:如果typeof box,typeof age都返回的undefined。從邏輯上思考,他們的值,一個是undefined,一個報錯;但他們的類型卻都是undefined。所以,我們在定義變量的時候,盡可能的不要只聲明不賦值。

?

?

三.Null類型

Null類型是一個只有一個值的數據類型,即特殊的值null。它表示一個空對象引用(指針),而typeof操作符檢測null會返回object。

var box = null;

alert(typeof box); ? ? ? //object

?

如果定義的變量準備在將來用于保存對象,那么最好將該變量初始化為null。這樣,當檢查null值就知道是否已經變量是否已經分配了對象引用了。

var box = null;

if (box != null) {

?????? alert('box對象已存在!');

}

?

PS:undefined是派生自null的,因此ECMA-262規定對它們的相等性測試返回true。

alert(undefined == null);

?

由于undefined和null兩個值的比較是相等的,所以,未初始化的變量(undefined)和賦值為null的變量會相等。這時,可以采用typeof變量的類型進行比較。建議還是養成良好的編碼規范,不要忘記初始化變量

var box;

var car = null;

alert(typeof box == typeof car)????? //true

?

四.Boolean類型

Boolean類型有兩個值(字面量):true和false。而true不一定等于1,false不一定等于0。JavaScript是區分大小寫的,True和False或者其他都不是Boolean類型的值。

var box = true;

alert(typeof box);

?

然Boolean類型的字面量只有true和false兩種,但ECMAScript中所有類型的值都有與這兩個Boolean值等價的值。要將一個值轉換為其對應的Boolean值,可以使用轉型函數Boolean()

var hello = 'Hello World!';

var hello2 = Boolean(hello);

alert(typeof hello);

?

上面是一種顯示轉換,屬于強制性轉換。而實際應用中,還有一種隱式轉換。比如,在if條件語句里面的條件判斷,就存在隱式轉換。

var hello = 'Hello World!';

if (hello) {

?????? alert('如果條件為true,就執行我這條!');

} else {

?????? alert('如果條件為false,就執行我這條!');

}

?

以下是其他類型轉換成Boolean類型規則?

數據類型

轉換為true的值

轉換為false的值

Boolean

true

false

String

任何非空字符串

空字符串

Number

任何非零數字值(包括無窮大)

0和NaN

Object

任何對象

null

Undefined

?

undefined

?

?

五.Number類型

Number類型包含兩種數值:整型和浮點型。為了支持各種數值類型,ECMA-262定義了不同的數值字面量格式。

最基本的數值字面量是十進制整數。

var box = 100;?????? ?????? ?????? //十進制整數

?

八進制數值字面量(以8為基數),前導必須是0,八進制序列(0~7)。

var box = 070;?????? ?????? ?????? //八進制,56

var box = 079;?????? ?????? ?????? //無效的八進制,自動解析為79

var box = 08;? ?????? ?????? //無效的八進制,自動解析為8

?

十六進制字面量前面兩位必須是0x,后面是(0~9及A~F)。

var box = 0xA;????? ?????? //十六進制,10

var box = 0x1f;????? ?????? //十六進制,31

?

浮點類型,就是該數值中必須包含一個小數點,并且小數點后面必須至少有一位數字

var box = 3.8;

var box = 0.8;

var box = .8;?? ?????? ?????? //有效,但不推薦

?

由于保存浮點數值需要的內存空間比整型數值大兩倍,因此ECMAScript會自動將可以轉換為整型的浮點數值轉成為整型。如下

var box = 8.;?? ?????? ?????? //小數點后面沒有值,轉換為8

var box = 12.0;????? ?????? //小數點后面是0,轉成為12

?

對于那些過大或過小的數值,可以用科學技術法來表示(e表示法)。用e表示該數值的前面10的指數次冪。

var box = 4.12e9;?? ??????   ?//即4120000000

var box = 0.00000000412;??? //即4.12e-9?? 小數點右移九位

?

雖然浮點數值的最高精度是17位小數,但算術運算中可能會不精確。由于這個因素,做判斷的時候一定要考慮到這個問題(比如使用整型判斷)

alert(0.1+0.2);?????? ?????? ?????? //0.30000000000000004

?

浮點數值的范圍在:Number.MIN_VALUE ~ Number.MAX_VALUE之間。

alert(Number.MIN_VALUE);?????? ?????? ?????? //最小值

alert(Number.MAX_VALUE);????? ?????? //最大值

?

如果超過了浮點數值范圍的最大值或最小值,那么就先出現Infinity(正無窮)或者-Infinity(負無窮)

var box = 100e1000;????? ?????? ?????? ?????? //超出范圍,Infinity

var box = -100e1000;??? ?????? ?????? ?????? //超出范圍,-Infinity

?

也可能通過Number.POSITIVE_INFINITY和Number.NEGATIVE_INFINITY得到Infinity(正無窮)及-Infinity(負無窮)的值。

alert(Number.POSITIVE_INFINITY); //Infinity(正無窮)

alert(Number.NEGATIVE_INFINITY);//-Infinity(負無窮)

?

要想確定一個數值到底是否超過了規定范圍,可以使用isFinite()函數。如果沒有超過,返回true,超過了返回false。

var box = 100e1000;

alert(isFinite(box));?????? ?????? ?????? ?????? ?????? //返回false或者true

?

NaN,即非數值(Not a Number)是一個特殊的值,這個數值用于表示一個本來要返回數值的操作數未返回數值的情況(這樣就不會拋出錯誤了)比如,在其他語言中,任何數值除以0都會導致錯誤而終止程序執行。但在ECMAScript中,會返回出特殊的值,因此不會影響程序執行。

var box = 0 / 0;????? ?????? ?????? ?????? //NaN

var box = 12 / 0;??? ?????? ?????? ?????? //Infinity

var box = 12 / 0 * 0;????? ?????? ?????? //NaN

?

可以通過Number.NaN得到NaN值,任何與NaN進行運算的結果均為NaN,NaN與自身不相等(NaN不與任何值相等)

alert(Number.NaN);?????? ?????? ?????? //NaN

alert(NaN+1); ?????? ?????? ?????? ?????? //NaN

alert(NaN == NaN)?????? ?????? ?????? ?????? //false

?

ECMAScript提供了isNaN()函數,用來判斷這個值到底是不是NaN。isNaN()函數在接收到一個值之后,會嘗試將這個值轉換為數值。

alert(isNaN(NaN)); ? ? ? ? ? ? ? ? ? ? ? //true

alert(isNaN(25));??? ?????? ?????? ?????? //false,25是一個數值

alert(isNaN('25'));?? ?????? ?????? ?????? //false,'25'是一個字符串數值,可以轉成數值

alert(isNaN('Lee')); ?????? ?????? ?????? //true,'Lee'不能轉換為數值

alert(isNaN(true));? ?????? ?????? ?????? //false????? true可以轉成成1

?

isNaN()函數也適用于對象。在調用isNaN()函數過程中,首先會調用valueOf()方法,然后確定返回值是否能夠轉換成數值。如果不能,則基于這個返回值再調用toString()方法,再測試返回值。

var box = {

?????? toString : function () {

?????? ?????? return '123';??? ?????? ?????? //可以改成return 'Alex'查看效果

?????? }

};

alert(isNaN(box));? ?????? ?????? ?????? //false?????

?

有3個函數可以把非數值轉換為數值:Number()、parseInt()和parseFloat()

Number()函數是轉型函數,可以用于任何數據類型,而另外兩個則專門用于把字符串轉成數值。

alert(Number(true));????? ?????? ?????? //1,Boolean類型的true和false分別轉換成1和0

alert(Number(25)); ?????? ?????? ?????? //25,數值型直接返回

alert(Number(null));????? ?????? ?????? //0,空對象返回0

alert(Number(undefined));??? ?????? //NaN,undefined返回NaN

?

如果是字符串,應該遵循以下規則:

1.只包含數值的字符串,會直接轉成成十進制數值,如果包含前導0,即自動去掉。

alert(Number('456'));???? ?????? ?????? //456

alert(Number('070'));???? ?????? ?????? //70

?

2.只包含浮點數值的字符串,會直接轉成浮點數值,如果包含前導和后導0,即自動去掉。

alert(Number('08.90'));? ?????? ?????? //8.9

?

3.如果字符串是空,那么直接轉成0

alert(Number(''));?? ?????? ?????? ?????? //0

?

4.如果不是以上三種字符串類型,則返回NaN。

alert(Number('Lee123'));?????? ?????? ?????? ?????? //NaN

?

5.如果是對象,首先會調用valueOf()方法,然后確定返回值是否能夠轉換成數值。如果轉換的結果是NaN,則基于這個返回值再調用toString()方法,再測試返回值。

var box = {

?????? toString : function () {

?????? ?????? return '123';??? ?????? ?????? //可以改成return 'Lee'查看效果

?????? }

};

alert(Number(box));????? ?????? ?????? //123

?

由于Number()函數在轉換字符串時比較復雜且不夠合理,因此在處理整數的時候更常用的是parseInt()

alert(parsetInt('456Lee'));????? ?????? //456,會返回整數部分

alert(parsetInt('Lee456Lee')); ?????? //NaN,如果第一個不是數值,就返回NaN

alert(parseInt('12Lee56Lee')); ?????? //12,從第一數值開始取,到最后一個連續數值結束

alert(parseInt('56.12'));?? ?????? ?????? //56,小數點不是數值,會被去掉

alert(parseInt(''));??? ?????? ?????? ?????? //NaN,空返回NaN

?

parseInt()除了能夠識別十進制數值,也可以識別八進制和十六進制。

alert(parseInt('0xA'));???? ?????? ?????? //10,十六進制

alert(parseInt('070'));???? ?????? ?????? //56,八進制

alert(parseInt('0xALee'));?????? ?????? //10,十六進制,Lee被自動過濾掉

?

ECMAScript為parseInt()提供了第二個參數,用于解決各種進制的轉換。

alert(parseInt('0xAF'));?? ?????? ?????? //175,十六進制

alert(parseInt('AF',16));? ?????? ?????? //175,第二參數指定十六進制,可以去掉0x前導

alert(parseInt('AF'));????? ?????? ?????? //NaN,理所當然

alert(parseInt('101010101',2));????? //314,二進制轉換

alert(parseInt('70',8))???? ?????? ?????? //56,八進制轉換

?

parseFloat()是用于浮點數值轉換的,和parseInt()一樣,從第一位解析到非浮點數值位置。

alert(parseFloat('123Lee'));??? ?????? //123,去掉不是別的部分

alert(parseFloat('0xA')); ?????? ?????? //0,不認十六進制

alert(parseFloat('123.4.5'));??? ?????? //123.4,只認一個小數點

alert(parseFloat('0123.400')); ?????? //123.4,去掉前后導

alert(parseFloat('1.234e7'));?? ?????? //12340000,把科學技術法轉成普通數值

?

六.String類型

?

String類型用于表示由于零或多個16位Unicode字符組成的字符序列,即字符串。字符串可以由雙引號(")或單引號(')表示。

var box = 'Alex';

var box = "Alex";

?

PS:在某些其他語言(PHP)中,單引號和雙引號表示的字符串解析方式不同,而ECMAScript中,這兩種表示方法沒有任何區別。但要記住的是,必須成對出現,不能穿插使用,否則會出錯。

var box = 'Alex";??? ?????? ?????? ?????? //混合使用,出錯

?

String類型包含了一些特殊的字符字面量,也叫轉義序列

?

字面量

含義

\n

換行

\t

制表

\b

空格

\r

回車

\f

進紙

\\

斜杠

\'

單引號

\"

雙引號

\xnn

以十六進制代碼nn表示的一個字符(0~F)。例:\x41

\unnn

以十六進制代碼nnn表示的一個Unicode字符(0~F)。例:\u03a3

?

?

ECMAScript中的字符串是不可變的,也就是說,字符串一旦創建,它們的值就不能改變要改變某個變量保存的字符串,首先要銷毀原來的字符串,然后再用另一個包含新值的字符串填充該變量(內部過程)。

var box = 'Mr.';

box = box + ' Lee';

?

toString()方法可以把值轉換成字符串。

var box = 11;

var box = true;

alert(typeof box.toString());

?

toString()方法一般是不需要傳參的,但在數值轉成字符串的時候,可以傳遞進制參數。

var box = 10;

alert(box.toString());???? ?????? ?????? ?????? //10,默認輸出

alert(box.toString(2));?? ?????? ?????? ?????? //1010,二進制輸出

alert(box.toString(8));?? ?????? ?????? ?????? //12,八進制輸出

alert(box.toString(10));? ?????? ?????? ?????? //10,十進制輸出

alert(box.toString(16));? ?????? ?????? ?????? //a,十六進制輸出

?

如果在轉型之前不知道變量是否是null或者undefined的情況下,我們還可以使用轉型函數String(),這個函數能夠將任何類型的值轉換為字符串。

var box = null;

alert(String(box));

?

PS:如果值有toString()方法,則調用該方法并返回相應的結果;如果是null或者undefined,則返回"null"或者"undefined"。

?

?

七.Object類型

?

ECMAScript中的對象其實就是一組數據和功能的集合。對象可以通過執行new操作符后跟要創建的對象類型的名稱來創建。

var box = new Object();

Object()是對象構造,如果對象初始化時不需要傳遞參數,可以不用寫括號,但這種方式我們是不推薦的。

var box = new Object;???? //不推薦!

?

Object()里可以任意傳參,可以傳數值、字符串、布爾值等。而且,還可以進行相應的計算。

var box = new Object(2);??? ?????? ?????? //Object類型,值是2

var age = box + 2;? ?????? ?????? ?????? ?????? //可以和普通變量運算

alert(age);?????? ?????? ?????? ?????? ?????? ?????? //輸出結果,轉型成Number類型了

?

既然可以使用new Object()來表示一個對象,那么我們也可以使用這種new操作符來創建其他類型的對象。

var box = new Number(5);??? ?????? ?????? //new String('Lee')、new Boolean(true)

alert(typeof box);?? ?????? ?????? ?????? ?????? //Object類型

?

PS:面向對象是JavaScript課程的重點,這里我們只是簡單做個介紹。詳見基礎部分其他博客。

?

?

Thank you, MR.LEE!

FOR MY LOVER , CC!?

?

?

?

?

?

轉載于:https://www.cnblogs.com/ttcc/p/3838662.html

總結

以上是生活随笔為你收集整理的JavaScript基础---语言基础(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一区二区三区久久综合 | 日韩精品一区二区三区免费视频 | 中文字幕在线高清 | 在线欧美日韩国产 | 亚洲人掀裙打屁股网站 | 操女人视频网站 | 日韩三级欧美 | 337p亚洲欧洲色噜噜噜 | 中文字幕第7页 | 秋霞国产午夜精品免费视频 | 国产精品国产三级国产专区53 | 一区二区色| 国产精品美女主播 | 日日撸夜夜撸 | 欧美又粗又长又爽做受 | 调教亲女小嫩苞h文小说 | 打屁屁日本xxxxx变态 | a√在线观看 | 青青青草视频在线观看 | 捆绑调教sm束缚网站 | 午夜tv| 小嫩嫩精品导航 | 日韩av手机在线免费观看 | 人人干天天操 | 午夜肉体高潮免费毛片 | 欧美日韩成人一区二区三区 | 色批网站 | 亚洲日本护士毛茸茸 | 波多野42部无码喷潮 | av日韩精品 | 欧美系列第一页 | 人妻体内射精一区二区 | 99久久网站| 快播视频在线观看 | 人人射 | 九九热视频精品在线观看 | 欧美69囗交视频 | 国产av电影一区二区三区 | 欧洲在线视频 | 91桃色免费视频 | 午夜欧美福利 | 久艹伊人 | 欧美成人xxx | 精品免费av | 寂寞午夜影院 | 午夜爽视频 | 国产情侣一区二区 | 樱花影院电视剧免费 | 一级特黄bbbbb免费观看 | 神马午夜视频 | 啪啪视屏 | 国产美女www爽爽爽视频 | 乱淫67194| 丁香花电影免费播放在线观看 | 国产成人激情视频 | 有码av在线 | 日韩免费在线视频 | 在线免费观看黄 | 国产12页 | www.色网 | 靠逼网站在线观看 | 蜜臀久久99精品久久久 | xx在线视频 | 2019亚洲男人天堂 | aaaa黄色| www日韩在线| 国产精品-色哟哟 | 亚洲综合久久久 | 国产孕妇孕交大片孕 | 超碰在线网址 | 精品日韩一区 | av激情影院 | 久久社区视频 | 99久国产| 老外黄色一级片 | 欧美日韩在线不卡 | 国产精品熟女一区二区不卡 | 中文字幕91在线 | 国产性猛交xx乱 | 国产网站在线看 | 脱裤吧导航 | 91超薄丝袜肉丝一区二区 | 一级片自拍 | 少妇又紧又色又爽又刺激 | 久久久久久综合 | 免费av不卡| 国产丰满大乳奶水在线视频 | 天天射网 | 亚洲国产aaa | 重囗味sm一区二区三区 | 在线一区二区三区 | 日本aⅴ在线 | 亚洲AV不卡无码一区二区三区 | 成人免费在线视频网站 | 超碰66| 国产精品乱码一区 | 不卡在线一区 | 肉丝超薄少妇一区二区三区 | 欧美成人女星 |