js基礎語法
Netcape
js基礎語法規範(ECMAScript1,2,3,3.1,5(IE9),6 ES ES6=es2015) DOM BOM
BOM :是由瀏覽器廠商各自實現的,因此差別比較大
DOM:相關的規範 是由W3C維護的
Node的優點 沒有瀏覽器的兼容性問題
前端項目儘可能不要使用ES6,須要考慮兼容性問題
--------------------------------數據類型---------------------------
1.數據類型分類:
基本數據類型:number string boolean undefined
null
複雜數據類型:對象(數組,函數,日期)
undefined:數據未定義的一種狀態
2.typeof 返回的數據類型
能夠返回這六種數據類型:number string boolean function undefined object
日期,數組,正則都是object類型
可使用typeof來檢測前5中的數據類型 '
注意返回的是字符串 小寫
console.log(typeof alert());//function 使用typeof檢測函數 返回的是function
3.邏輯運算符
&& : 左邊爲真的話,返回右邊;左邊爲假的話,返回左邊 (若是左邊爲真,須要計算右邊因此會返回右邊的結果)
|| :左邊爲真的話,返回左邊;左邊爲假的話 返回右邊 (若是左邊爲真,就不須要再計算右邊了,因此會直接返回左邊的值)
console.log(undefined && 10);//undefined
console.log(0 || 3);//3
真假值:
假值: 空字符串"" 數值0 false null(聲明的變量賦值了可是賦值的是空值) undefined(變量聲明瞭可是沒有定義) NaN(不是一個數字,NaN自己是number類型的)
4.獲取對象未定義的屬性的話返回的是undefined不是 is not defined
var obj = {name:''xiaoming"};
console.log(obj.age);//undefined
5.值類型 引用類型
值類型:數字 字符串 boolean null undefined
引用類型:對象
5. instanceof
var result = obj instanceof XXX;
返回值是一個boolean類型
檢測obj是不是XXX類的一個實例
var obj ={};
console.log(obj instanceof Object);
var arr =[1,2,3,4];
console.log(arr instanceof Array);
constructor屬性:保存了對構造特定對象實例的函數的引用
console.log(arr.constructor==Array);//true
console.log(obj.constructor==Object);//true
console.log(num.constructor==Number);//true
代碼調試 異常捕獲
面向對象基礎複習
構造函數和原型
變量聲明提高(詞法做用域 原理性的介紹)
做用域:全局做用域 局部做用域(寫一個函數就產生了一個局部做用域)
function bar(){
function foo(){}
foo =10;//2.給變量foo賦值 10 foo變爲了一個number類型
// function foo() {}//1.函數聲明 提高到當前做用域的頂端
return foo;//3.將number類型的的foo返回
}
// console.log(foo);
console.log(typeof bar());
function fun(a, b){
for(var i =0; i < arguments.length; i++){
console.log(arguments[i]);//分別打印的函數的參數
}
return a + b;
}
console.log(fun(3));//NaN 3+undefined 獲得是一個NaN
var foo =function bar(name){
console.log("hello"+ name);
};
foo("world");
//bar();//沒法打印 bar is not defined
/*在函數內部,bar能夠被訪問,此時的bar就至關於foo,至關於函數自己*/
//只能經過打印foo.toString()從而找到bar
console.log(foo()== bar());
console.log(foo.toString());//打印的是function bar(name) 函數體
-
function t1() {前端
console.log(str2); //is not defined數組
str2 = 'mike';瀏覽器
}函數
t1();spa
第一種狀況涉及到JavaScript的運行階段,分爲詞法分析階段和運行階段,在詞法分析階段時,先聲明瞭str2變量但沒有賦值,因此在運行階段就出現了undefined。調試
第二種狀況在詞法分析階段也沒法聲明str2,由於沒有var關鍵字聲明,因此在運行階段直接拋出異常。code