[TOC]
## eval
把一個字符串變為JS表達式執行,
例如:
```
eval("12+23+34+45") ->114
eval("23,34,45,56") ->56
```
### eval 和 node中的runInThisContext
```
let a = 'ahhh';
eval('console.log(a)'); //ahhh
let vm = require('vm');
vm.runInThisContext(`console.log(a)`); //沙箱 完全隔離 讀不到外面的a //ReferenceError: a is not defined
```
## 括號表達式
括號表達式可以執行單個或多個表達式
返回最后一個表達式的值,多個表達式之間需要用逗號“,”分隔開
```
(1,2+3,4+5,6)//代碼會被一次執行,最后將6作為返回值
```
### 括號表達式與函數
```
function fn1(){console.log(1)};
function fn2(){console.log(2)};
// ;(function(){
// console.log()
// })();
;(fn1,fn2)(); //->2 ->只有fn2執行了 ->(x1,x2,x3...)括號表達式,一個括號中出現多項內容,中間用","隔開,但是我們最后獲取到的結果只有最后一項
function fn1(){console.log(this)};
function fn2(){console.log(this)};
var obj = {name:'ahhh',fn:fn2};
(fn2,obj.fn)(); //->執行的是obj.fn,但是執行的時候里面的this變為了window而不是obj //因為括號表達式中obj.fn相當于是把fn2的值copy一份放進來
(obj.fn)(); //->但如果只有一項,this還是obj
```
- 空白目錄
- window
- location
- history
- DOM
- 什么是DOM
- JS盒子模型
- 13個核心屬性
- DOM優化
- 回流與重繪
- 未整理
- 文檔碎片
- DOM映射機制
- DOM庫封裝
- 事件
- 功能組件
- table
- 圖片延遲加載
- 跑馬燈
- 回到頂部
- 選項卡
- 鼠標跟隨
- 放大鏡
- 搜索
- 多級菜單
- 拖拽
- 瀑布流
- 數據類型的核心操作原理
- 變量提升
- 閉包(scope)
- this
- 練習題
- 各種數據類型下的常用方法
- JSON
- 數組
- object
- oop
- 單例模式
- 高級單例模式
- JS中常用的內置類
- 基于面向對象創建數據值
- 原型和原型鏈
- 可枚舉和不可枚舉
- Object.create
- 繼承的六種方式
- ES6下一代js標準
- babel
- 箭頭函數
- 對象
- es6勉強筆記
- 流程控制
- switch
- Ajax
- eval和()括號表達式
- 異常信息捕獲
- 邏輯與和或以及前后自增
- JS中的異步編程思想
- 上云
- 優化技巧
- 跨域與JSONP
- 其它跨域相關問題
- console
- HTML、XHTML、XML
- jQuery
- zepto
- 方法重寫和方法重載
- 移動端
- 響應式布局開發基礎
- 項目一:創意簡歷