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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

学习笔记(二)JavaScript基本概念(语法,数据类型,控制语句,函数)

發(fā)布時間:2023/12/9 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记(二)JavaScript基本概念(语法,数据类型,控制语句,函数) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.語法

1.javascirpt中一切(變量,函數(shù)名和操作符)是嚴(yán)格區(qū)分大小寫的。

2.javascript(標(biāo)識符)

所謂標(biāo)識符,就是指變量,函數(shù),屬性的名字,或者函數(shù)的參數(shù)。

命名規(guī)則:第一個字符必須是一個字母、下劃線、美元符號,其它字符可以是字母、下劃線、美元符號或數(shù)字。

不能把關(guān)鍵字,保留字,true,false和null用作標(biāo)識符。

3.ECMAScript標(biāo)識符采用駝峰大小寫格式,也就是第一個字母小寫,剩下的每個單詞的首字母大寫。(但是沒有誰強制要求這個格式)

4.注釋

//單行注釋
/*
*這是多行注釋
*/

5.語句

每條語句最好用一個分號結(jié)尾,但是也可以省略分號。

可以把多條語句組合到一個代碼塊中,及代碼塊以左花括號({)開頭,以右花括號(})結(jié)尾。

if (test)?
alert(test); //有效但容易出錯,最好不要使用

if (test) {

alert(test);//推薦使用
}

6.關(guān)鍵字和保留字

?

?

7.變量

變量是松散類型的,可以用來保存任何類型的數(shù)據(jù)。使用關(guān)鍵字var來聲明變量。

var message; 像這樣未經(jīng)過初始化的變量會保存一個特殊的值undefined

obj=100; 這樣雖然有效,但不推薦,這樣相當(dāng)于聲明了一個全局變量

二. ECMAScript有5種簡單數(shù)據(jù)類型:Undefined,Null,Boolean,Number和String以及1種復(fù)雜數(shù)據(jù)類型Object?

1.typeof操作符:一元操作符,操作數(shù)可以是變量或數(shù)字字面量,用來檢測給定變量的數(shù)據(jù)類型。

可能的返回值:

1). 'undefined' --- 這個值未定義;

2). 'boolean' ? ?--- 這個值是布爾值;

3). 'string' ? ? ? ?--- 這個值是字符串;

4). 'number' ? ? --- 這個值是數(shù)值;

5). 'object' ? ? ? --- 這個值是對象或null;

6). 'function' ? ?--- 這個值是函數(shù)。

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

var message;

alert(message==undefined); //true

包含undefined值的變量與尚未定聲明的變量還是不一樣。

var message;

//var age;
alert(message); //undefined
alert(age); //產(chǎn)生錯誤

對尚未聲明的變量執(zhí)行typeof,結(jié)果返回undefined,對尚未初始化的變量執(zhí)行typeof,結(jié)果返回undefined

var message;

//var age;
alert(typeof message); //undefined
alert(typeof age); //undefined

最好顯示的初始化變量,這樣的話當(dāng)typeof操作符返回undefined值時,我們就知道被檢測的變量沒有被聲明,而不是尚未初始化,因為沒有聲明的變量用typeof操作符就會直接返回undefined

3.null類型

null類型只有一個值,即特殊的null. null值表示一個空對象指針,typeof操作符檢測null值返回“object”。

null與undefined之間的相等操作符(==)進行比較總是返回true。

4.Boolean類型

只有兩個字面值:true和false,這兩個值與數(shù)字值不一樣,true不一定等于1,false不一定等于0,這兩個字面值區(qū)分大小寫。

要將一個值轉(zhuǎn)換為其對應(yīng)的Boolean值,可以調(diào)用轉(zhuǎn)型函數(shù)Boolean()。

javascript中,任何的數(shù)據(jù)類型調(diào)用轉(zhuǎn)型函數(shù)Boolean(),總會返回一個Boolean值,各種數(shù)據(jù)類型及轉(zhuǎn)換規(guī)則如下:

5.Number類型

包括整數(shù)和浮點數(shù)

1).整數(shù)包括十進制,八進制字面值和十六進制的字面值。

八進制字面值的第一位必須是零,十六進制的字面值的前兩位必須是0x。

在進行算術(shù)計算時,八進制字面值和十六進制的字面值最終會轉(zhuǎn)換成十進制數(shù)值。

2).浮點數(shù)

所謂浮點數(shù)值,該數(shù)值中必須包含一個小數(shù)點,并且小數(shù)點后必須至少有一位數(shù)字。小數(shù)點前面可以沒有整數(shù),但是不推薦這樣使用。

  浮點數(shù)可以這樣:var floatNum = .1;但是不推薦這樣使用。

  由于保存浮點數(shù)值需要的內(nèi)存空間是整數(shù)值的兩倍,因此不失時機的將浮點數(shù)值轉(zhuǎn)換為整數(shù)值。如果浮點數(shù)小數(shù)點后面沒有任何數(shù)字,那個這個數(shù)值就可以被作為整數(shù)值來保存,同樣,如果浮點數(shù)本身就表示一個整數(shù)(如1.0)那么該值也會被轉(zhuǎn)換為整數(shù)。

對于極大和極小數(shù)值,使用科學(xué)計數(shù)法。浮點數(shù)值最高精度是17位小數(shù)。

? ? ?Number.MAX_VALUE整數(shù)的最大值

  Number.MIN_VALUE整數(shù)的最小值

  如果計算得到一個超出javascript數(shù)值范圍的值,那么這個數(shù)值自動轉(zhuǎn)換為特殊的Infinity,如果某次返回正的或負的Infinity值,那么該值將無法繼續(xù)參與下一次計算

  要想確定一個數(shù)值是不是有窮的,可以使用isFinite(number?)函數(shù),如果 number 是有限數(shù)字(或可轉(zhuǎn)換為有限數(shù)字),那么返回 true。否則,如果 number 是 NaN(非數(shù)字),或者是正、負無窮大的數(shù),則返回 false。

  訪問Number.NEGATIVE_INFINITY和Number.POSITIVE_INFINITY可以得到正和負的Infinity的值,所以其實這兩個屬性分別保存著-Infinity和Infinity

3).? NaN

? ? ? NaN特點:1任何涉及到NaN的操作都會返回NaN,2NaN與任何值都不相等,其中包括NaN本身 。

? ? ? isNaN()這個函數(shù)接受一個參數(shù),該參數(shù)可以是任何類型,而此函數(shù)會幫我們確定這個參數(shù)是否“不是數(shù)值”,不是數(shù)值返回true。

? ? ? isNaN()這個函數(shù)接受一個參數(shù),會嘗試將這個值轉(zhuǎn)換為數(shù)值。任何不能被轉(zhuǎn)換為數(shù)值的值都會導(dǎo)致該函數(shù)返回true。

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

?? ? alter(isNaN(10));//false

?? ? alter(isNaN("10"));///false

?? ? alter(isNaN("red"));//true

?? ? alter(isNaN(true));//true

4).數(shù)值轉(zhuǎn)換

有三個函數(shù)可以將非數(shù)值轉(zhuǎn)換為數(shù)值:Number(),parseInt(),parseFloat()

轉(zhuǎn)型類型Number()可以用于任何數(shù)據(jù)類型,parseInt(),parseFloat()專門用于將字符串轉(zhuǎn)換成數(shù)值。

Number()函數(shù)的轉(zhuǎn)換規(guī)則如下:

(1)如果是Boolean值,true和false將分別被轉(zhuǎn)換為1和0
(2)如果是是數(shù)字值,只是簡單的傳入和返回
(3)如果是null值,返回0
(4)如果是undefined,返回NaN
(5)如果是字符串,遵循下列規(guī)則:
? ? ? ? 如果字符串中只包含數(shù)字,則將其轉(zhuǎn)換為十進制數(shù)值,級“1”會變成1,“123”會變成123,而“011”會變成11(前面的0被忽略了)
? ? ? ? 如果字符串中只包含有效的浮點格式,如“1.1”,則將其轉(zhuǎn)換為對應(yīng)浮點數(shù)值(同樣,也會忽略前導(dǎo)零)
? ? ? ? 如果字符串中只包含有效的十六進制格式,例如“0xf”,則將其轉(zhuǎn)換為相同大小的十進制整數(shù)值
? ? ? ? 如果字符串是空的(不包含任何字符),則將其轉(zhuǎn)換為0
? ? ? ? ?如果字符串中包含除上述格式之外的字符,則將其轉(zhuǎn)換為NaN
(6)如果是對象,則調(diào)用對象的valueOf()方法,然后依照前面的規(guī)則轉(zhuǎn)換返回的值。如果轉(zhuǎn)換的結(jié)果是NaN,則調(diào)用對象的toString()把各種數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值確實有點復(fù)雜。下面是幾個具體例子:
var num1 = Number("Hello world!"); //NaN
var num2 = Number(""); //0
var num3 = Number("000011"); //11
var num4 = Number("true"); //1

parseInt()

parseInt()函 數(shù)在轉(zhuǎn)換字符串時,它會忽略字符串前面的空格,直至找到第一個非空格字符。

如果第一個字符不是數(shù)字字符或者負號,parseInt()就會返回NaN;也就是說,用parseInt()轉(zhuǎn)換空字符串會返回NaN(Number()對空字符串返回0)。

如果第一個字符是數(shù)字字符,parseInt()會繼續(xù)解析第二個字符,直到解析完所有后續(xù)字符或者遇到了一個非數(shù)字字符。

例如,“123blue”會被轉(zhuǎn)換為 1234,因為“blue”會被完全忽略。類似地,“22.5”會被轉(zhuǎn)換成22,因為小數(shù)點并不是有效的數(shù)字字符。

如果字符串中的第一個字符是數(shù)字字符,parseInt()也能夠識別出各種整數(shù)格式(即十進制、八進制、十六進制)。也就是說,如果字符串以 “0x”開頭且后跟數(shù)字字符,就會將其當(dāng)作一個十六進制整數(shù);如果字符串以“0”開頭且后跟數(shù)字字符,則將其當(dāng)作一個八進制數(shù)或十進制來解析。

  為了更好地理解parseInt()函數(shù)的轉(zhuǎn)換規(guī)則,下面給出了一些例子:

var num1 = parseInt("1234blue"); //1234
var num2 = parseInt(""); //NaN
var num3 = parseInt("0xA") //10(十六進制)
var num4 = parseInt("22.5"); //22
var num5 = parseInt("070"); //56或70(八進制)
var num6 = parseInt("70"); //(70)十進制
var num7 = parseInt("0xF") //15(十六進制)

parseInt()解析“070”,導(dǎo)致上述困惑,ECMAScript也為這個函數(shù)提供了第二個參數(shù):轉(zhuǎn)換時使用的基數(shù)(即多少進制)。

指定基數(shù)會影響到轉(zhuǎn)換的輸出結(jié)果。

var num1 = parseInt("AF", 16); //175
var num2 = parseInt("AF"); //NaN
  這個例子中的第一個轉(zhuǎn)換成功了,而第二個則失敗了。差別在于第一個轉(zhuǎn)換傳入了基數(shù),明確告訴parseInt()要解析一個十六進制格式的字符串;而第二個轉(zhuǎn)換發(fā)現(xiàn)第一個字符不是數(shù)字字符,因此就自動終止了。

var num1 = parseInt("10", 2); //2
var num2 = parseInt("10", 8);? //8
var num3 = parseInt("10", 10); //10
var num4 = parseInt("10", 16); //16

parseFloat()

parseFloat()也是從第一個字符(位置0)開始解析每個字符,一直解析到字符串末尾,或解析到遇見一個無效的浮點數(shù)字字符為止。也就是說,字符串中的第一個小數(shù)點是有效的,而第二個小數(shù)點是無效的,因此它后面的字符串將被忽略。舉例來 說,“22.34.5”將會被轉(zhuǎn)換為22.34。

  除了第一個小數(shù)點有效之外,parseFloat()與parseInt()的第二個區(qū)別在于它始終都會忽略前導(dǎo)零。由于parseFloat()只解析十進制值,因此 它沒有用第二個參數(shù)指定基數(shù)的用法。十六進制格式的字符串始終會被轉(zhuǎn)換為0。最后還要注意一點:如果字符串包含的是一個可解析為整數(shù)的數(shù)(沒有小數(shù)點,或者小數(shù)點后面都是 零),parseFloat()會返回整數(shù)。以下是使用parseFloat()轉(zhuǎn)換數(shù)值的幾個典型示例:

var num1 = parseFloat("1234blue"); //1234
var num1 = parseFloat("0xA"); //0
var num1 = parseFloat("22.5"); //22.5
var num1 = parseFloat("22.34.5"); //22.34
var num1 = parseFloat("0908.5"); //908.5
var num1 = parseFloat("3.125e7"); //31250000

6.String類型

用雙引號表示的字符串和用單引號表示的字符串完全相同,任何字符串長度都可以通過其length屬性取得。

字符串的特點:字符串一旦創(chuàng)建,它們的值就不能改變。要改變某個變量保存的字符串,首先要銷毀原來的字符串,然后再用一個包含新值的字符串填充該變量。

toString()-轉(zhuǎn)換為字符串

數(shù)值的toString()方法:把一個數(shù)值轉(zhuǎn)換為字符串,返回該數(shù)值的字符串表現(xiàn)形式。可以傳入一個基數(shù),可以以十進制,八進制和十六進制的格式返回數(shù)值的字符串表現(xiàn)形式。

字符串toString()方法:返回字符串的一個副本。

轉(zhuǎn)換為字符串方法toString(),數(shù)值、布爾值、對象和字符串都有些方法,但null和undefined值沒有此方法

在不知道值為null或undefined值時,可以使用轉(zhuǎn)型函數(shù)String(),這個函數(shù)能夠?qū)⑷魏晤愋偷闹缔D(zhuǎn)換為字符串,String()函數(shù)遵循轉(zhuǎn)換規(guī)則:1). 如果值有toString()方法,則調(diào)用該方法(沒有參數(shù))返回相應(yīng)的結(jié)果2). 如果值是null則返回"null"3). 如果值為undefined則返回"undefined"

7.Object類型

ECMAScript中的對象其實就是一組數(shù)據(jù)和功能的集合。對象可以通過new操作符來創(chuàng)建。在ECMAScript中,如果不能構(gòu)造函數(shù)傳遞參數(shù),則可以省略后面的那一對圓括號

如下所示

var obj = new Object();
var obj = new Object;//但一般不推薦這種寫法。

Object的每個實例都具有下列屬性和方法

  ? constructor保存著用于創(chuàng)建當(dāng)前對象的構(gòu)造函數(shù)

  hasOwnProperty(propertyName)用于檢查給定的屬性在當(dāng)前對象實例中(而不是在實例的原型中)是否存在

  isPrototypeOf(object)用于檢查傳入的對象是否是另一個對象的原型

  propertyIsEnumerable(propertyName)用于檢查給定的屬性是否能夠使用for-in語句來枚覺。

? ? ? toLocalString()返回對象的字符串表示,該字符串與執(zhí)行環(huán)境的地區(qū)對應(yīng)。

? ? ? toString()返回對象的字符串表示。

? ? ? valueOf()返回對象的字符串,數(shù)值,布爾值表示,返回指定對象的原始值。

每個JavaScript固有對象的 valueOf 方法定義不同。

?

對象返回值
Array數(shù)組的元素被轉(zhuǎn)換為字符串,這些字符串由逗號分隔,連接在一起。其操作與 Array.toString 和 Array.join 方法相同。
BooleanBoolean 值。
Date存儲的時間是從 1970 年 1 月 1 日午夜開始計的毫秒數(shù) UTC。
Function函數(shù)本身。
Number數(shù)字值。
Object對象本身。這是默認(rèn)情況。
String字符串值。

Math 和 Error 對象沒有 valueOf 方法。

三.函數(shù)

一. 函數(shù)使用function關(guān)鍵字來聲明,后跟一組參數(shù)及函數(shù)體。

function sayHi(name,message){

? ? ? alter("hello"+name+","+message);

}

函數(shù)的調(diào)用:通過函數(shù)名來調(diào)用,后面加一對圓括號和參數(shù)。

sayHi("Nike","How are you today?");

函數(shù)中return語句之后的任何代碼都永遠不會執(zhí)行

return 語句也可以不帶有任何返回值,這種情況 下,函數(shù)在停止執(zhí)行后將返回undefined值 

function sum(num1,num2){

return num1+num2;

alter("Hello");//永遠不會被執(zhí)行

}

sum(5,10);

?二.javascript的函數(shù)參數(shù)

javascript的函數(shù)參數(shù)與其它語言有所不同,它不介意傳進來多少個參數(shù),也不介意傳進來的參數(shù)是什么數(shù)據(jù)類型。原因是javascript的函數(shù)參數(shù)在內(nèi)部是用一個數(shù)組來表示,函數(shù)接收到的始終是這個數(shù)組,不關(guān)心數(shù)組中包含哪些參數(shù),不包含參數(shù)也沒關(guān)系。在函數(shù)體內(nèi)可以通過arguments對象來訪問這個參數(shù)數(shù)組,從而獲取傳遞給函數(shù)的每一個參數(shù)。

可以使用方括號語法訪問他的每個參數(shù)(arguments[0]第一個參數(shù),arguments[1]第二個參數(shù),。......)

通過arguments對象的length屬性可以獲得有多少個參數(shù)傳遞給了函數(shù),沒有傳遞值的命名參數(shù)將自動被賦予undefined值(ECMAScript中的所有參數(shù)傳遞的都是值,不可能通過引用傳遞參數(shù))

上面的函數(shù)可以重寫,不顯示地使用命名參數(shù)

function sayHi(){

? ? ? alter("hello"+arguments[0]+","+arguments[1]);//arguments[0]對應(yīng)與name參數(shù)

}

命名參數(shù)可以與arguments對象一同使用,arguments的值永遠與對應(yīng)的命名參數(shù)的值同步。修改命名參數(shù)的值不會改變arguments的值,修改arguments的值會改變命名參數(shù)的值。

function doAdd(num1,num2){
  arguments[1]=10;
  alert(arguments[0]+num2);//10
}
  doAdd(0,20);

ECMAScript所有參數(shù)傳遞的都是值,不可能通過引用傳遞參數(shù)

三. ECMAScript函數(shù)沒有重載

重載是指定義兩個名字相同的函數(shù),只要這兩個定義的簽名(接受參數(shù)的類型和數(shù)量)不同即可。

ECMAScript中兩個名字相同的函數(shù),后定義的函數(shù)覆蓋了先定義的函數(shù)。

function addSomeNumber(num){

  return num+100;

}

function addSomeNumber(num){

  return num+200;

}

var result =?addSomeNumber(100); //300

?

注意:與其它語言不同,ECMAScript沒有為整數(shù)和浮點數(shù)值分別定義不同的數(shù)據(jù)類型,Numer類型可用于表示所有數(shù)值

ECMAScript中無須指定函數(shù)的返回值,因為任何ECMAScript函數(shù)都可以在任何時候返回任何值

ECMAScript函數(shù)中函數(shù)參數(shù)是以一個包含零或多個值的數(shù)組的形式傳遞的

可以向ECMAScript函數(shù)傳遞任意數(shù)量的參數(shù),并且可以通過arguments對象來訪問這些參數(shù)

轉(zhuǎn)載于:https://www.cnblogs.com/qinxuemei/p/4017981.html

總結(jié)

以上是生活随笔為你收集整理的学习笔记(二)JavaScript基本概念(语法,数据类型,控制语句,函数)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。