js學習——基礎知識
JavaScript
//這是註釋 a = 1;//簡單賦值語句
數據類型
js有動態類型,也就是相同的變量可用作不同類型(python也是)
數字 | Number |
var x = 5;//只有一種數字類型 var x = 5.0; var x = 5e5; var x = 5e-5; 所有數據都以 64 位浮點型數據存儲 |
字符串 | String | var x = "5"; |
布爾 | Boolean |
var x = true; var x = false; |
數組 | Array |
var x = new Array();x[0] = 0; var x = new Array("0", "1"); var x = ["0", "1"] |
對象 | Object |
//對象是屬性和方法的容器 var x = {zero:0,first:1};//name:value var zero = x.zero;//訪問對象屬性 var first = x["first"]; |
函數 | function |
a = function(){} |
空 | Null | var x = null;//null可用來清空變量 |
未定義 | Undefined |
var x;//變量不含值 null和undefined值相同,但類型不同 |
函數、方法
函數 | 方法 |
在對象x中定義函數funcName | |
function 函數名(var1, var2){ var x = 1; return x;//返回x } |
var x{ id:1, funcName:function(){ return id;};}; |
x.funcName; x.funcName(); |
函數中return默認是最後一行,即使沒有分號(return)也會默認結束函數。
變量作用域
局部變量 | 全局變量 | |
聲明/定義方式 |
在函數體內定義 var x = 1; |
//給未聲明的變量賦值,自動作為全局變量 x = 1; 在函數外聲明的變量 var x = 1; |
作用域 |
只能在函數內被訪問 |
網頁內都能訪問 |
生存期 | 函數運行完成後刪除 | 頁面關閉後刪除 |
全局變量都屬於window對象 x = 1; window.x = 1; for (var i = 0; i < 10; i++) { //循環外可以訪問i和y |
運算符 大部分與C++類似
算法運算符 | + - * / ++ -- % |
賦值運算符 | = += -= *= /= %= |
字符串+數字 |
字符串+數字=字符串 "a"+5="a5" 5+5+"a"="10a" 空文本+數字="數字"(無空格) " " + 5 = "5" |
比較運算符 | ==等於 ===絕對等於(值和類型) !=不等於 !==不絕對等於(值和類型) < <= > >= |
邏輯運算符 |
&& || !(not) 比較運算式?真結果:假結果 |
一元運算符+ |
var y="5"; var x=+y;//利用+可以把變量轉換為數字 |
條件語句 與C++類似
if...else | switch | for循環 | while循環 |
if(a>b) { } else if(a>c) { } else { } |
switch(n) { case 1: a = 1; break; case 2: a = 2; break; default: a = 0; } |
for(int i=0; i<len; i++) { } //遍歷對象中的每一個屬性 var data={x:0,y:1}; for(d in data){ } //遍歷數組中的每一個元素 var data=["a","b"]; for(d in data) { } |
while(true) { } do { }while(true) |
break和continue 與C++類似
continue只能用於循環
break;只能用於循環或switch break 標簽引用;可退出任意代碼塊
//list_label對下列語句作標記 list_label: { a = 1; b = 1; //break 標簽引用 可退出任意代碼塊 break list_label; c = 1; }
typeof 獲取變量類型
typeof 1; typeof NaN; |
number 在轉換時,不能轉換成合法數字的都是NaN |
typeof "1"; | string |
typeof true; | boolean |
typeof [1,2]; | object |
typeof null; var x; typeof x; |
object 只聲明未賦值 |
typeof undefined typeof x; |
undefined x未聲明過 |
typeof fcuntion(){} typeof fcuntion a(){} |
function |
"1".constructor |
constructor屬性可以返回對象的構造函數, 故可通過對象的consructor屬性來判斷它的類型 對Array typeof返回也是object,但用constructor屬性就可以返回Array() |
錯誤(異常)
try{ throw "錯誤信息";//拋出一個自定義錯誤 } catch(err){ a = err;//err的值就是 錯誤信息 }
變量提升
1. 函數及變量的聲明會被自動提升到最上面(聲明會自動變成在代碼最上面)
2. 初始化不會自動提升(var x = 5;這個語句的位置不會自動變化)
嚴格模式
該模式下對代碼有一定要求。通過把"user strict"寫在腳本或函數頭部來使用嚴格模式。
JSON: JavaScript Object Notation
一種輕量級的數據交換格式,用於存儲和傳輸數據的格式,通常用於服務端向網頁傳遞數據 。
語法規則
數據為 鍵/值 對。數據由逗號分隔。大括號保存對象。方括號保存數組
3 條網站信息(對象)的數組
{"sites":[ {"name":"Runoob", "url":"www.runoob.com"}, {"name":"Google", "url":"www.google.com"}, {"name":"Taobao", "url":"www.taobao.com"} ]}
javascript:void(0)
javascript:void(0) void計算()中表達式但不返回值。<a href="javascript:void(0)"></a>點擊鏈接時不會有反應。但用在js時void不會產生效果。
href="#"與href="javascript:void(0)"的區別
# 包含了一個位置信息,默認的錨是#top 也就是網頁的上端。
而javascript:void(0), 僅僅表示一個死鏈接。
js學習——基礎知識