1. 程式人生 > >Javascript知識匯總------js中容易被忽略的細節(持續更新)

Javascript知識匯總------js中容易被忽略的細節(持續更新)

bsp true 方式 efi 定義 沒有 快捷 快捷方式 ==

  • in運算符

    語法:boolean “name” in Object 判斷對象是否具有某一個屬性
var myObject = {name:‘吳小碎‘};
console.log(‘name‘ in myObject); //true   返回值為true表示myObject中存在name屬性
console.log(‘age‘ in myObject); //false   返回值為false表示myObject中不存在name屬性
  • new運算符 和 直接量(字面量)

var
objONE = {}; //直接量(字面量)生成對象 var objTWO = new Object(); //new運算符生成對象
  • 引用類型 和 值類型

值類型賦值不會改變原始數據 引用類型在內存中是一個,值改變會改變以前的數據
var num1 = ‘13‘;
var num2 = num1;
num2 = ‘23‘;
console.log(num1)   //13   改變值num2的值num1並未改變,證明num1與num2在空間分別占有自己的內存,是兩個獨立的個體
console.log(num2)   //
23 console.log(num1 == num2); //false 這裏是值引用比較,故只比較值是否相同 var obj1 = {name:‘吳小碎‘,age:18}; var obj2 = obj1; obj2.sex = ‘男‘ console.log(obj2); // {name: "吳小碎", age: 18, sex: "男"} console.log(obj1); // {name: "吳小碎", age: 18, sex: "男"} 當增加obj2屬性時,obj1隨之改變 console.log(obj1 == obj2); //true 引用類型公用一個內存,相當於obj2是obj1的桌面快捷方式,obj1和obj2指向同一內存路徑
  • delete

  1. 刪除數組中的一個元素
  2. 對象的屬性或者方法
  3. 刪除一個沒有用var 的變量聲明
var arr1 = [1,2,3,4]
delete arr1[0]
console.log(arr1);  // [empty, 2, 3, 4] 長度不變,只是刪除其中的值

var obj = {name:‘吳小碎‘,age:18};
delete obj.name
console.log(obj)   //{age: 18}   刪掉鍵值對

var a1 = ‘test‘;
delete a1;
console.log(a1); //test  變量a1還存在,a1未被刪除

a2 = ‘test‘;
delete a2;
console.log(a2)   //Uncaught ReferenceError: a2 is not defined  證明已經刪除變量a2
  • 報錯處理方法

  try{ 可能出現錯誤的代碼 } catch(e) { e->接收的錯誤信息 }finally{ 無論怎樣都會最後執行 }
try {
    //可能出現錯誤的代碼
    //1.
      obj.name;  //系統報錯信息->obj is not defined
    //2.
    //throw new Error(‘我是錯誤信息‘);   //強行扔出報錯信息  
} catch (error) {
    //如果出錯執行  error->try拋出的錯誤信息
    console.log(error); //ReferenceError: a is not defined
} finally {
    //無論怎樣都會最後執行
    console.log(‘最終執行我了嗎?‘);   //最終執行我了嗎?
}
  • js執行: 預解析(函數,和var) , 一句一句執行

解析順序:scirpt代碼塊 -> 解析執行環境 -> var || function (function優先級高於var)
<script>
    console.log(msg);//與下方msg定義變量存在於兩個代碼塊故:Uncaught ReferenceError: msg is not defined
</script>
<script>
    var msg = ‘吳小碎‘
</script>

<script>
    console.log(msg);   //msg在上一個代碼快解析完成,所以打印出:吳小碎
    console.log(msg1);  //與msg1存在與同一個代碼塊,解析執行環境存在在一個script代碼塊內所以:undefined
    var msg1 = ‘吳小碎‘
</script>

  • 表達式

凡是將數據和運算符等聯系起來有值的式子就是表達式
  • 語句

表達式+分號

Javascript知識匯總------js中容易被忽略的細節(持續更新)