最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript學(xué)習(xí)筆記(一)基礎(chǔ)知識(shí)

 更新時(shí)間:2014年09月30日 09:16:46   投稿:hebedich  
本文是學(xué)習(xí)筆記系列的第一篇,跟以前一樣,介紹些基礎(chǔ)知識(shí),包括js基本概念、 JScript 的變量、js的數(shù)據(jù)類型、3.JScript 的運(yùn)算符、js流程控制、js函數(shù)。有需要的朋友可以參考下

基本概念

javascript是一門解釋型的語言,瀏覽器充當(dāng)解釋器。
js執(zhí)行引擎并不是一行一行的執(zhí)行,而是一段一段的分析執(zhí)行。 

延遲腳本

HTML4.0.1中定義了defer屬性,它的用途是表明腳本在執(zhí)行時(shí)不會(huì)影響頁面的構(gòu)造。也就是說,腳本會(huì)延遲到整個(gè)頁面都解析完畢后再執(zhí)行。因此,在<script>元素中設(shè)置defer屬性,相當(dāng)于告訴瀏覽器立即下載,但延遲執(zhí)行。在XHTML文檔中,要把defer屬性設(shè)置為defer=“defer"

異步腳本

html5為<script>定義了async屬性。整個(gè)屬性與defer屬性類似,都用于改變處理腳本的行為。同樣,與defer類似,async只適用于外部腳本文件,并告訴瀏覽器立即下載文件。但與defer不同的是,標(biāo)記為async的腳本并不保證按照指定他們的先后順序執(zhí)行。
指定async的目的是不讓頁面等待腳本文件下載和執(zhí)行,從而異步加載頁面其他內(nèi)容。因此,建議異步腳本不要再加載期間操作DOM

區(qū)分大小寫

ECMASCript中的一切(包括變量,函數(shù)名和操作符)都區(qū)分大小寫。

1. JScript 的變量

變量在第一次用到時(shí)就設(shè)置于內(nèi)存中,便于后來在腳本中引用。使用變量之前先進(jìn)行聲明。可以使用 var 關(guān)鍵字來進(jìn)行變量聲明。

var count, amount, level; // 用單個(gè) var 關(guān)鍵字聲明的多個(gè)聲明。

變量命名

變量名包括全局變量,局部變量,類變量,函數(shù)參數(shù)等等,他們都屬于這一類。

變量命名都以類型前綴+有意義的單詞組成,用駝峰式命名法增加變量和函式的可讀性。例如:sUserName,nCount。

前綴規(guī)范:
每個(gè)局部變量都需要有一個(gè)類型前綴,按照類型可以分為:

s:表示字符串。例如:sName,sHtml;
n:表示數(shù)字。例如:nPage,nTotal;
b:表示邏輯。例如:bChecked,bHasLogin;
a:表示數(shù)組。例如:aList,aGroup;
r:表示正則表達(dá)式。例如:rDomain,rEmail;
f:表示函數(shù)。例如:fGetHtml,fInit;
o:表示以上未涉及到的其他對象,例如:oButton,oDate;
g:表示全局變量,例如:gUserName,gLoginTime;

JScript 是一種區(qū)分大小寫的語言。創(chuàng)建合法的變量名稱應(yīng)遵循如下規(guī)則:

注意第一個(gè)字符不能是數(shù)字。
后面可以跟任意字母或數(shù)字以及下劃線,但不能是空格
變量名稱一定不能是 保留字。

javascript是一種弱類型語言,JavaScript 會(huì)忽略多余的空格。您可以向腳本添加空格,來提高其可讀性。

varjavascript的保留字,表明接下來是變量說明,變量名是用戶自定義的標(biāo)識(shí)符,變量之間用逗號(hào)分開。

如果聲明了一個(gè)變量但沒有對其賦值,該變量存在,其值為Jscript 值 undefined。

強(qiáng)制類型轉(zhuǎn)換

在 Jscript 中,可以對不同類型的值執(zhí)行運(yùn)算,不必?fù)?dān)心 JScript 解釋器產(chǎn)生異常。相反,JScript 解釋器自動(dòng)將數(shù)據(jù)類型之一改變(強(qiáng)制轉(zhuǎn)換)為另一種數(shù)據(jù)類型,然后執(zhí)行運(yùn)算。例如:

運(yùn)算 結(jié)果

數(shù)值與字符串相加  將數(shù)值強(qiáng)制轉(zhuǎn)換為字符串。
布爾值與字符串相加  將布爾值強(qiáng)制轉(zhuǎn)換為字符串。
數(shù)值與布爾值相加  將布爾值強(qiáng)制轉(zhuǎn)換為數(shù)值。

要想顯式地將字符串轉(zhuǎn)換為整數(shù),使用 parseInt 方法。要想顯式地將字符串轉(zhuǎn)換為數(shù)字,使用 parseFloat 方法。

JavaScript 變量的生存期:當(dāng)您在函數(shù)內(nèi)聲明了一個(gè)變量后,就只能在該函數(shù)中訪問該變量。當(dāng)退出該函數(shù)后,這個(gè)變量會(huì)被撤銷。這種變量稱為本地變量。您可以在不同的函數(shù)中使用名稱相同的本地變量,這是因?yàn)橹挥新暶鬟^變量的函數(shù)能夠識(shí)別其中的每個(gè)變量。
如果您在函數(shù)之外聲明了一個(gè)變量,則頁面上的所有函數(shù)都可以訪問該變量。這些變量的生存期從聲明它們之后開始,在頁面關(guān)閉時(shí)結(jié)束。

js變量思維導(dǎo)圖

2.js的數(shù)據(jù)類型

jscript 有三種->主要數(shù)據(jù)類型、兩種->復(fù)合數(shù)據(jù)類型和兩種->特殊數(shù)據(jù)類型。

主要(基本)數(shù)據(jù)類型

字符串?dāng)?shù)值布爾

復(fù)合(引用)數(shù)據(jù)類型

對象數(shù)組

特殊數(shù)據(jù)類型

 Null`Undefined`

字符串?dāng)?shù)據(jù)類型:字符串?dāng)?shù)據(jù)類型用來表示 JScript 中的文本。在js中,雖然雙引號(hào)("")和單引號(hào)('')均可表示字符串,而且它們幾乎沒有任何區(qū)別。但只使用雙引號(hào)("")來表示字符串被認(rèn)為是最佳的。

一個(gè)字符串值是排在一起的一串零或零以上的 Unicode 字符(字母、數(shù)字和標(biāo)點(diǎn)符號(hào))。

什么是Unicode?

Unicode為每個(gè)字符都提供了唯一的數(shù)值,不管是什么平臺(tái)、什么程序或什么語言。開發(fā)unicode是為了給處理世界上存在的所有字符提供統(tǒng)一的編碼。

數(shù)值數(shù)據(jù)類型

我們需要明白一點(diǎn),JScript 內(nèi)部將所有的數(shù)值表示為浮點(diǎn)值,因此,在 Jscript 中整數(shù)和浮點(diǎn)值沒有差別。

Boolean數(shù)據(jù)類型

布爾(邏輯)只能有兩個(gè)值:true 或 false。

js數(shù)組和對象

詳情看我這篇文章->javascript學(xué)習(xí)總結(jié)— —數(shù)組和對象部分

Null 數(shù)據(jù)類型:可以通過給一個(gè)變量賦 null 值來清除變量的內(nèi)容。

Jscript中 typeof 運(yùn)算符將報(bào)告 null 值為 Object 類型,而非類型 null。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
 <title></title>
 <script type="text/javascript"> 
   alert(typeof null);
 </script>
</head>
<body>
</body>
</html>

null用來表示尚未存在的對象,常用來表示函數(shù)企圖返回一個(gè)不存在的對象。

Undefined 數(shù)據(jù)類型:

如下情況將返回 undefined 值:

對象屬性不存在,聲明了變量但從未賦值。

null和undefined的區(qū)別

alert(typeof undefined); //output "undefined" 
alert(typeof null); //output "object" 
alert(null == undefined); //output "true" 

ECMAScript認(rèn)為undefined是從null派生出來的,所以把它們定義為相等的。

alert(null === undefined); //output "false" 
alert(typeof null == typeof undefined); //output "false" 

null與undefined的類型是不一樣的,所以輸出"false"。而===代表絕對等于,在這里null === undefined輸出false

另外,這里介紹一種比較重要的數(shù)據(jù)類型——引用數(shù)據(jù)類型

引用數(shù)據(jù)類型

javascript引用數(shù)據(jù)類型是保存在堆內(nèi)存中的對象,JavaScript不允許直接訪問堆內(nèi)存空間中的位置和操作堆內(nèi)存空間,只能通過操作對象在棧內(nèi)存中的引用地址。所以引用類型的數(shù)據(jù),在棧內(nèi)存中保存的實(shí)際上是對象在堆內(nèi)存中的引用地址。通過這個(gè)引用地址可以快速查找到保存在堆內(nèi)存中的對象。

下面我們來演示這個(gè)引用數(shù)據(jù)類型賦值過程

自然,給obj2添加name屬性,實(shí)際上是給堆內(nèi)存中的對象添加了name屬性,obj2和obj1在棧內(nèi)存中保存的只是堆內(nèi)存對象的引用地址,雖然也是拷貝了一份,但指向的對象卻是同一個(gè)。故而改變obj2引起了obj1的改變。

基本類型值指的是那些保存在棧內(nèi)存中的簡單數(shù)據(jù)段,即這種值完全保存在內(nèi)存中的一個(gè)位置。

而引用類型值則是指那些保存在堆內(nèi)存中的對象,即變量中保存的實(shí)際上只是一個(gè)指針,這個(gè)指針指向內(nèi)存中的另一個(gè)位置,該位置保存對象。

簡而言之,堆內(nèi)存存放引用值,棧內(nèi)存存放固定類型值。

ECMAScript 中,變量可以存在兩種類型的值,即原始值和引用值。
原始值存儲(chǔ)在棧(stack)中的簡單數(shù)據(jù)段,也就是說,它們的值直接存儲(chǔ)在變量訪問的位置。引用值存儲(chǔ)在堆(heap)中的對象,也就是說,存儲(chǔ)在變量處的值是一個(gè)指針(point),指向存儲(chǔ)對象的內(nèi)存處。

<script type="text/javascript”>
var box = new Object(); //創(chuàng)建一個(gè)引用類型
var box = "lee";  //基本類型值是字符串
box.age = 23;  //基本類型值添加屬性很怪異,因?yàn)橹挥袑ο蟛趴梢蕴砑訉傩浴?
alert(box.age); //不是引用類型,無法輸出;
</script>

3.JScript 的運(yùn)算符

優(yōu)先級(jí):指運(yùn)算符的運(yùn)算順序,通俗的說就是先計(jì)算哪一部分。
結(jié)合性:同一優(yōu)先級(jí)運(yùn)算符的計(jì)算順序,通俗的說就是從哪個(gè)方向算起,是左到右還是右到左。

數(shù)據(jù)類型轉(zhuǎn)換

String() 轉(zhuǎn)換為字符串類型
Number() 轉(zhuǎn)換為數(shù)字類型
Boolean() 轉(zhuǎn)換為布爾類型

parseInt:將字符串轉(zhuǎn)換為整數(shù)。從字符串的開頭開始解析,在第一個(gè)非整數(shù)的位置停止解析,并返回前面讀到所有的整數(shù)。如果字符串不是以整數(shù)開頭的,將返回NaN。如:parseInt(“150 hi”)返回的值是:150,parseInt("hi")返回的值是:NaN。
parseFloat:將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)。 從字符串的開頭開始解析,在第一個(gè)非整數(shù)的位置停止解析,并返回前面讀到所有的整數(shù)。如果字符串不是以整數(shù)開頭的,將返回NaN。如:parseFloat("15.5 hi") 返回的值是:15.5,parseFloat("hi 15.5")返回的值是:NaN。

eval:將字符串作為javascript表達(dá)式進(jìn)行計(jì)算,并返回執(zhí)行結(jié)果,如果沒有結(jié)果則返回undefined。

4.js流程控制

對于js流程控制語句,這里只講幾個(gè)比較難懂的。其他不贅述。等下附上一張思維導(dǎo)圖。
1.for...in 語句對應(yīng)于一個(gè)對象的每個(gè),或一個(gè)數(shù)組的每個(gè)元素,執(zhí)行一個(gè)或多個(gè)語句。

for (variable in [object | array])
statements 

參數(shù):

variable:必選項(xiàng)。一個(gè)變量,它可以是 object 的任一屬性或 array 的任一元素。
object, array:可選項(xiàng)。要在其上遍歷的對象或數(shù)組。
statement:可選項(xiàng)。相對于 object 的每個(gè)屬性或 array 的每個(gè)元素,都要被執(zhí)行的一個(gè)或多個(gè)語句??梢允菑?fù)合語句。

雖然條件控制語句(如if語句)只在執(zhí)行多條語句的情況下才要求使用代碼塊(左花括號(hào)"{"開頭,右花括號(hào)"}"結(jié)尾),但最佳實(shí)踐是始終使用代碼塊。

if(args)
  alert(args);//容易出錯(cuò)

if(args){
  alert(args);//推薦使用
}


js流程控制語句思維導(dǎo)圖

5.js函數(shù)

函數(shù)是由事件驅(qū)動(dòng)的或者當(dāng)它被調(diào)用時(shí)執(zhí)行的可重復(fù)使用的代碼塊。

Jscript 支持兩種函數(shù):一類是語言內(nèi)部的函數(shù),另一類是自己創(chuàng)建的。
JavaScript 函數(shù)允許沒有參數(shù)(但包含參數(shù)的小括號(hào)不能省略),也可以向函數(shù)傳遞參數(shù)供函數(shù)使用。

更多關(guān)于函數(shù)的知識(shí)請?jiān)L問我的另一篇文章:javascript學(xué)習(xí)大總結(jié)(四)function函數(shù)部分

對象的組成

方法——函數(shù):過程、動(dòng)態(tài)的
屬性——變量:狀態(tài)、靜態(tài)的

最后,再附上一張前輩總結(jié)的思維導(dǎo)圖:


相關(guān)文章

  • js JSON.stringify()基礎(chǔ)詳解

    js JSON.stringify()基礎(chǔ)詳解

    JSON.stringify() 方法是將一個(gè)JavaScript值(對象或者數(shù)組)轉(zhuǎn)換為一個(gè) JSON字符串,如果指定了replacer是一個(gè)函數(shù),則可以選擇性的替換值,或者如果指定了replacer是一個(gè)數(shù)組,可選擇性的僅包含數(shù)組指定的屬性
    2019-06-06
  • Ext JS 4官方文檔之三 -- 類體系概述與實(shí)踐

    Ext JS 4官方文檔之三 -- 類體系概述與實(shí)踐

    Ext JS 4從底層對類體系進(jìn)行了重構(gòu),這是Ext JS歷史上的第一次對類體系的巨大重構(gòu),需要的朋友可以參考下
    2012-12-12
  • javascript三種代碼注釋方法

    javascript三種代碼注釋方法

    本文主要介紹javascript中三種常見的代碼注釋的方法,希望能夠幫到大家。
    2016-06-06
  • 一篇文章帶你了解JavaScript的包裝類型

    一篇文章帶你了解JavaScript的包裝類型

    這篇文章主要為大家詳細(xì)介紹了JavaScript的包裝類型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Knockout visible綁定使用方法

    Knockout visible綁定使用方法

    本文講解Knockout讓visible綁定到DOM元素上,使得該元素的hidden或visible取決于綁定的值,下面有代碼參考
    2013-11-11
  • js實(shí)現(xiàn)單元格拖拽效果

    js實(shí)現(xiàn)單元格拖拽效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)單元格拖拽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • js格式化時(shí)間和js格式化時(shí)間戳示例

    js格式化時(shí)間和js格式化時(shí)間戳示例

    這篇文章主要介紹了js格式化時(shí)間和js格式化時(shí)間戳示例,需要的朋友可以參考下
    2014-02-02
  • javascript克隆對象深度介紹

    javascript克隆對象深度介紹

    本文將詳細(xì)介紹js 深度克隆的分類與實(shí)現(xiàn),需要的朋友可以參考下
    2012-11-11
  • JavaScript入門初體驗(yàn)書寫方式

    JavaScript入門初體驗(yàn)書寫方式

    學(xué)了這么久,你真的了解javascript嗎?很多不知道的小白總是把它和java聯(lián)系在一起,在這里阿牛很負(fù)責(zé)任的告訴你們,兩者沒有任何關(guān)系,今天就來帶你們一起揭開javascript的神秘面紗
    2022-03-03
  • javascript編程起步(第四課)

    javascript編程起步(第四課)

    javascript編程起步(第四課)...
    2007-01-01

最新評(píng)論

商都县| 江油市| 哈尔滨市| 横山县| 高碑店市| 永顺县| 桑植县| 平昌县| 武隆县| 波密县| 萨嘎县| 龙井市| 太湖县| 宿松县| 耿马| 淮滨县| 儋州市| 东兴市| 天等县| 晋城| 香格里拉县| 延吉市| 海丰县| 大新县| 辽宁省| 延川县| 漯河市| 靖远县| 汤阴县| 怀仁县| 滦南县| 井陉县| 盐边县| 西和县| 呼和浩特市| 罗源县| 彭州市| 济阳县| 南昌市| 黄石市| 辉县市|