01.第1-3章:JavaScript基礎(chǔ)知識

第一章:javaScript簡介

1.javaScript的組成


javaScript由ECMAScript、DOM(文檔對象模型)、BOM(瀏覽器對象模型)構(gòu)成。
ECMAScript:提供核心語言功能
DOM:提供訪問和操作網(wǎng)頁內(nèi)容的方法和接口。
BOM:提供與瀏覽器交互的方法和接口。
當(dāng)前主要有5個主流瀏覽器:IE、Firefox、 Chrome、Safari、Opera

第二章:HTML中使用JavaScript

1.script元素

1)有兩種使用方式:

  • 直接在html頁面中嵌入



    包含在<script>元素內(nèi)部的JavaScript代碼將從上至下依次解釋,在解釋器對<script>元素內(nèi)部所有代碼求值完畢之前,頁面中的其余內(nèi)容都不會被瀏覽器加載和顯示。

  • 引入外部JavaScript文件,src屬性是必須的,指向外部JavaScript文件的鏈接。



    2)<script>標簽的位置
    按照慣例,是將<script>放到<head>中,目的是將所有外部文件的引用放在相同的地方。
    但是,在<head>中包含所有的JavaScript文件,意味著所有的JavaScript代碼被下載、解析和執(zhí)行完成以后,才能開始呈現(xiàn)頁面內(nèi)容。(瀏覽器遇到body才呈現(xiàn)內(nèi)容)。對于很多JS頁面代碼的頁面來說,會導(dǎo)致瀏覽器呈現(xiàn)頁面出現(xiàn)明顯的延遲,延遲期間一片空白。
    為避免這個問題,現(xiàn)在一般將JavaScript引用放在<body>元素中頁面內(nèi)容之后。



    3)延遲腳本
    <script>元素中的defer屬性:表示告訴瀏覽器立即下載,但延遲執(zhí)行。

    4)異步腳本
    <script>元素中async屬性:不讓頁面等待腳本下載和執(zhí)行,從而異步加載頁面其他內(nèi)容。

2.文檔模式

混雜模式:在文檔開始處沒有發(fā)現(xiàn)文檔類型聲明,所有的瀏覽器都會默認開啟混雜模式。
主要影響CSS內(nèi)容的呈現(xiàn),有些情況下會影響到JavaScript的解釋執(zhí)行。
標準模式:


第三章:基本概念

1.語法

1)區(qū)分大小寫
2)標識符
標識符是按照如下規(guī)則

  • 首字符:字母、下劃線、$(也就是不能以數(shù)字開頭)
  • 其他字符:字母、數(shù)字、下劃線、$

3)嚴格模式
ES5引入了嚴格模式,嚴格模式是為JavaScript定義了一種不同的解析與執(zhí)行模型。對于ES3中一些不確定的行為將得到處理,對于某些不安全的操作也會拋出錯誤。整個腳本頂部添加如下代碼:



這是一個編譯指示,用于告訴引擎切換到嚴格模式。
也可以指定函數(shù)在嚴格模式下執(zhí)行


4)語句以分號結(jié)尾

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

3.變量

ES的變量是松散類型的,松散類型就是可以用來保存任何類型的數(shù)據(jù)。每個變量僅僅是一個用于保存值的占位符。

var message;

未經(jīng)過初始化的變量,會保存一個特殊的值--undefined
也可以直接初始化變量

var message = “hi”;

注意:

  • 使用var定義的變量為局部變量,在函數(shù)中使用var定義一個變量,這個變量在函數(shù)退出后就會被銷毀。


  • 省略var操作符,變量就成了全局變量,能夠在函數(shù)外的任何地方被訪問到。


  • 但是,不推薦省略var操作符定義全局變量,在嚴格模式下會拋出ReferenceError錯誤。


4.數(shù)據(jù)類型

1)Undefined:如果這個值未被定義。
Undefined類型只有一個值:undefined,在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined。



2)Null:對象為空
Null類型只有一個值:null,null表示一個空對象指針,typeof操作符檢測null時返回object

如果定義的變量準備用來保存對象,最好將變量初始化為null。


undefined值是派生自null值,因此


3)Boolean:如果這個值是布爾值。
該類型有兩個值:true,false;true不一定是1,false不一定是0。
轉(zhuǎn)型函數(shù)Boolean()




if語句自動執(zhí)行Boolean轉(zhuǎn)換


4)Number:如果這個值是數(shù)。
var intNum=55;
var octalNum=070;//八進制0開頭
var octalNum=079;//無效的八進制會被解析為79
注意:八進制在嚴格模式下無效,會導(dǎo)致支持的JavaScript引擎拋出錯誤。

var hexNum=0xA; //十六進制0x開頭

  • NaN:非數(shù)值是一個特殊的數(shù)值,這個數(shù)值表示一個本來要返回數(shù)值的操作數(shù)未返回值的情況。
    比如,在其他編程語言中,任何數(shù)除以0都會導(dǎo)致錯誤,停止代碼執(zhí)行。在ES中,任何數(shù)除以0會返回NaN。
    • 任何涉及NaN的操作都會返回NaN
    • NaN與任何值都不相等,包括NaN本身


    • isNaN()函數(shù)來判斷這個參數(shù)是否不是數(shù)值


  • 數(shù)值轉(zhuǎn)換
    三個函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number()、parseInt()、parseFloat()。
    Number()可以用于任何數(shù)據(jù)類型



    parseInt()、parseFloat()用于將字符串轉(zhuǎn)換成數(shù)值。




    5)String:如果這個值是字符串。
  • 字符串可以由雙引號或單引號表示:


  • ES中字符串是不可變的:


  • 轉(zhuǎn)換為字符串
    1)toString()方法,但是null和undefined值沒有這個方法




    2)不知道要轉(zhuǎn)換的值是不是null和undefined時,使用String()方法,能夠轉(zhuǎn)換任何類型的值。



6)Object:如果這個值是對象。
var o=new Object();
Object的每個實例都具有下列屬性和方法


5.操作符

1)一元操作符
i++,i--,++i,--i

  • 一元加操作符


  • 一元減操作符



    2)位操作符
    負數(shù)是以二進制補碼進行存儲的:


  • 按位非(~)



    這里num2的值是補碼,所以是一個負數(shù),通過減一取反,可以得到絕對值為11010,即26,那么num2就是-26。
    按位非的本質(zhì):操作數(shù)的負值-1


  • 按位與(&)
    兩個數(shù)值對應(yīng)位都是1時返回1,任何一位是0,結(jié)果都是0。


  • 按位或(|)
    有一個位是1就返回1,在兩個位都是0才返回0。


  • 按位異或(^)
    相異為1,相同為0


  • 左移(<<)


  • 有符號右移(>>)


  • 無符號右移(>>>)
    無符號右移是以0來填充空位
    正數(shù)而言,和有符號結(jié)果相同。


    對于負數(shù)而言

    3)布爾操作符
    邏輯非(!)、邏輯與(&&)、邏輯或(||)
    4)乘性操作符
    乘法()、除法()、求模(%)
    5)加性操作符
    加法+、減法-
    6)關(guān)系操作符
    <,>,<=,>=
    7)相等操作符

  • 相等不相等(==,!=)
    先轉(zhuǎn)換操作數(shù),再比較


  • 全等不全等(===,!==)
    不轉(zhuǎn)換就相等的情況返回true。



    8)條件操作符




    9)賦值操作符=

    10)逗號操作符


6.語句

1)if語句



2)do-while



3)while

4)for



5)for-in

注意:
如果表示要迭代的對象的變量值為null或undefined,for-in語句會拋出錯誤。ES5更正了這一情況,不會再拋出錯誤,只是不執(zhí)行循環(huán)體。為了保證最大限度的兼容性,在使用for-in循環(huán)之前,先檢測確認該對象的值不是null或undefined。
6)lable語句

7)break和continue

break:跳出循環(huán)
continue:跳出本次循環(huán)繼續(xù)從循環(huán)頂部開始下一次循環(huán)。
8)with語句



9)switch語句

通過為每個case后面添加一個break語句,可以避免同時執(zhí)行多個case代碼的情況。
如果要混合幾種情形:

7.函數(shù)


ES中函數(shù)在定義時不必指定返回值,任何函數(shù)都可以通過return來實現(xiàn)返回值。



函數(shù)在執(zhí)行return語句之后就會停止并立即退出。


  • 理解參數(shù)
    ES函數(shù)不在乎傳進來多少參數(shù),也不介意傳入的是什么類型。即便定義的函數(shù)只接收兩個參數(shù),在調(diào)用時未必一定傳入兩個參數(shù)。
    ES參數(shù)內(nèi)部使用一個數(shù)組來表示的,在函數(shù)體內(nèi)可以通過arguments對象訪問參數(shù)數(shù)組,即使定義時沒有寫參數(shù),調(diào)用時也可以直接將參數(shù)值放入。



  • 沒有重載


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容