表達式和語句
eval( ) 只有一個參數
參數非字符串時,直接返回這個參數;
參數為字符串時,它把字符串當成JavaScript代碼進行編譯,編譯失敗則拋出語法錯誤,編譯成功則執行代碼,並返回最後一條語句的值,若沒有值則返回undefined
eval()使用了調用它的變量的作用域環境
它接收的字符串參數,在作為單獨的代碼時,必須是有語義的,否則編譯失敗
delete運算符:用來刪除對象的自由屬性、數組的元素,
刪除屬性後,屬性將不存在,而刪除數組元素後,會在數組內留下一個值為undefined的洞,數組長度不變;
嘗試刪除無法刪除的屬性返回false,若刪除成功或刪除操作不起作用時均返回true
delete無法刪除:
1、內置核心、客戶端屬性不能刪除;
2、用戶通過var語句聲明的變量不能刪除;
3、通過function語句定義的函數和函數參數也不能刪除
4、不可配置的屬性無法刪除
void運算符:void的操作數會正常執行,但會忽略操作數的值並返回undefined
void有如下作用:
* 通過采用void 0取undefined比采用字面上的undefined更靠譜更安全可靠;
* 填充<a>的href確保點擊時不會產生頁面跳轉; 填充<image>的src,確保不會向服務器發出垃圾請求。href='javascript:void(0);'
不管break語句帶不帶標簽,它的控制權都無法越過函數的邊界!即不能從函數內部跳轉到函數外部
Object.create( p , [x] )
該方法創建一個以對象p為原型的新對象,並返回該對象,可選的x是用以對對象屬性的進一步描述;
var p1 = Object.create(p); //新建對象p1,它繼承自對象p(以p為原型)
即p1的prototype(原型)屬性的值為p
P.x和P['x']的區別:
P.x訪問時,只能固定訪問屬性名為x的屬性;
而P['x']比較靈活,可以動態的修改[ ]內字符串的值,來訪問不同的屬性,如P['x'+i]
邏輯與“&&”,邏輯或”||“的妙用:短路行為
通過&&,保證了讀取length屬性之前,book和book.subtitle都為真值,即為對象
var len = book && book.subtitle && book.subtitle.length;
保證x的值為:從a~f中,第一個為真值的值,忽略後面的真值
var x = a || b || c || d || e || f;
if( ! buy){...} 當buy為假值時,執行{...}
通過! ! x來得到一個等價的布爾值
以上就是小編為大家帶來的JavaScript學習筆記整理_關於表達式和語句的全部內容了,希望對大家有所幫助,多多支持~