script元素:
src:同域或不同域的外部指令碼
defer:對外部檔案有效,指令碼可以延遲到文件被完全解析後才會執行不會影響頁面
async:對外部檔案有效,非同步,
type
charset:字符集
在xhtml使用用cdata
嵌入外部檔案:可維護性、可快取、
文件模式
混雜模式:不同瀏覽器的樣式差別會很大
標準模式
區別混雜模式給行內元素設定寬高會生效
混雜模式使用margin:0 auto失效
混雜模式ie寬高包括 padding和border
noscript:瀏覽器不支援指令碼,支援但禁用才會顯示這個標籤的內容
語法區分大小寫
識別符號:字母_$數字組成,第乙個字元不能事數字
駝峰式命名
'use strict'
變數:鬆散型 let x = 'a' => x = 2
資料型別:
五種基本型別
undefined:宣告未被賦值或者非嚴格模式下為宣告的變數
null:空物件 null==undefined => true
boolean:true false。if()中false '' 0 nan undefined被判斷為false
number
浮點數整數
無窮:+-infinity,一旦轉換成無窮就不會參與計算
用isfinite()判斷 處於最大數和最小數之間返回true
nan:非數值
任何數/0 = nan
涉及 nan的操作都返回 nan
nan == nan //false
isnan():方法執行步驟:首先嘗試將傳入的值轉換為數值,能轉換的比如boolean和字元數值就返回false ,其餘返回true
isnan()判斷物件:先呼叫物件的valueof(),不能轉成數值就呼叫tostring(),再判斷
數值轉換:
number:一元+操作符一樣
boolean => 1,0
null => 0
' ' ''=> 0
undefined => nan
number('123nnn') => nan
八進位制和十六進製制 => 十進位制
數值字串 => 對應的數值 忽略前面的0
parseint:(num,基數)
字串 '' ' '=> nan
parseint('11nn') => 11 只有整數
能夠轉換十六和八進位制
parsefloat
只解析十進位制
十六進製制 => 0
string:
一旦建立不可變
轉換:tostring
null和undefined每天tostring方法用string:步驟 有tostring呼叫 並返回結果=>null返回null =>undefined返回undefined
物件:屬性方法
constructor:建立當前物件的函式
hasownproperty(屬性名):檢查屬性在例項而不是原型中
操作符:
typeof:undefined number string boolean object(陣列 物件 null) function一元位
布林*+-關係
條件相等
條件賦值,語句
迴圈條件
break
continue
switch
函式:引數arguments是偽陣列,方法不會被過載只會被覆蓋
基本型別
基本型別可以直接操作
引用型別不可以直接操作,因為是被儲存在記憶體中,
函式引數傳遞的是值, 物件也是傳遞的引用
function add(num)let count = 20
console.log(add(count)) //30
console.log(count) //20
//傳遞物件
function setname(obj)
let person = new object()
person.name = '456'
setname(person)
console.log(person.name) //'123'
//function setname(obj)
let person = new object()
person.name = '789'
setname(person)
console.log(person.name) //'123'
//函式裡面的obj是區域性變數 執行完就回被銷毀
型別檢測
typeof
變數 instanceof 原型 返回boolean =>所有引用型別都是object都會返回true,基本型別object返回false
執行環境和作用域
執行環境 =>變數物件:執行到語句時會有乙個變數物件,裡面儲存了能訪問到的函式和變數,執行環境的**執行完就立即銷毀,裡面的變數和函式也銷毀
全域性執行環境
函式執行環境=>執行到每乙個函式就回產生乙個函式的執行環境,推入環境棧中,執行完就彈出,到上乙個執行環境,依次迴圈直到所有**執行完回到全域性執行環境
作用域鏈: 每到乙個執行環境,變數物件有乙個作用域鏈 =>當前變數物件=>外層函式=>最外層=>全域性:對執行環境有權訪問的變數和函式的有序訪問,作用域鏈的前端,始終都是當前執行的**所在環境的變數物件,全域性變數物件是作用域鏈的最後乙個物件,查詢識別符號沿著作用域鏈查詢變數和函式來使用
函式的變數物件=>活動物件(activatiton object):包含arguments=>變數宣告=>函式宣告=>賦值,
作用域鏈的結構可以看出,在執行期上下文的作用域鏈中,識別符號所在的位置越深,讀寫速度就會越慢。因為全域性變數總是存在於執行期上下文作用域鏈的最末端,因此在識別符號解析的時候,查詢全域性變數是最慢的。所以,在編寫**的時候應盡量少使用全域性變數,盡可能使用區域性變數。
變數全域性變數:
沒有使用var宣告的變數
垃圾收集:找出不再繼續使用的變數=>然後釋放記憶體,垃圾收集器跟蹤哪個變數有用哪個沒有用然後對無用的變數打上標記,已備將來**-------具體實現分為兩種
標記清除:垃圾收集器會給環境中的所有變數加上標記,然後去掉環境中變數和環境變數引用的變數的標記,=>然後再被加上標記的變數就是準備被刪除的----也就是離開作用域的值,因為已經無法訪問了
引用計數:記錄每個變數被引用的次數----------宣告乙個變數a並且賦值引用型別,則這個值引用次數=1,這個值又被賦值給另乙個變數b的話=>引用次數就+1,然後如果a或者b又被賦值了另乙個值=>這個值的引用次數就-1,引用次數=0就說明可以**了,垃圾收集器再次執行就可以釋放記憶體了
引用計數問題:迴圈引用
效能問題:垃圾收集器是週期性執行的,根據變數數目啟動垃圾收集器,動態改變臨界值
管理記憶體:解除引用,不在使用的資料手動=null,適用於全域性,區域性物件在離開執行環境就銷毀了
8 26 js基礎 及小練習
位運算 1.按位與 我們所進行的數值計算,再計算中都是二進位制去計算 計算 10 20 console.log 12 21 console.log 12 21 console.log 12 21 二進位制 原碼 反碼 補碼 12 正數的原碼 反碼 補碼都是一樣的 原碼 0000 1100 12 0 ...
複習 JS基礎
以下算是經典的入門演算法吧,還記得第一次接觸時,感覺難得要命,現在來看,也不過如此!1 如果今天是星期六,那麼1000天後是星期幾?用一條語句計算出來。var a 1000 7 6 7 alert a 2 使用者輸入乙個三位數,用程式計算三位數字的和。比如 使用者輸入155,就彈出11 使用者輸入3...
JS高階 複習
每個例項物件中都有乙個屬性 proto 是原型,瀏覽器使用的,不標準的屬性 每個建構函式中都有乙個屬性prototype,是原型,程式設計師使用的 物件導向和面向過程都是程式設計思想 物件導向注重的是結果,面向過程注重的是過程 物件導向的特性 封裝,繼承,多型 1.通過原型實現繼承,改變原型的指向,...