進階4:JS作用域鏈 & JS引用類型

題干

立即執行函數表達式是什么?有什么作用?
回答內容

(function(){alert('我是匿名函數')}())

創建一個獨立的作用域。
這個作用域里面的變量,外面訪問不到(即避免「變量污染」)。
打分
評語

ok
題干

求n!,用遞歸來實現。
回答內容

function factorial(n){
if(n === 1){
return 1
}
return n * factorial(n-1)
}
factorial(3) //6
打分
評語

沒有考慮 n為0 的情況
題干

以下代碼輸出什么?

    function getInfo(name, age, sex){
        console.log('name:',name);
        console.log('age:', age);
        console.log('sex:', sex);
        console.log(arguments);
        arguments[0] = 'valley';
        console.log('name', name);
    }

    getInfo('饑人谷', 2, '男');
    getInfo('小谷', 3);
    getInfo('男');

回答內容

"name:"
"饑人谷"
"age:"
2
"sex:"
"男"
[object Arguments] {
0: "饑人谷",
1: 2,
2: "男"
}
"name"
"valley"
"name:"
"小谷"
"age:"
3
"sex:"
undefined
[object Arguments] {
0: "小谷",
1: 3
}
"name"
"valley"
"name:"
"男"
"age:"
undefined
"sex:"
undefined
[object Arguments] {
0: "男"
}
"name"
"valley"
打分
評語
題干

寫一個函數,返回參數的平方和?

   function sumOfSquares(){
   }
   var result = sumOfSquares(2,3,4)
   var result2 = sumOfSquares(1,3)
   console.log(result)  //29
   console.log(result2)  //10

回答內容

function sumOfSquares(){
var sum=0;
for(var i=0;i<arguments.length;i++){
sum=sum+arguments[i]*arguments[i];
}
return sum;
}
var result = sumOfSquares(2,3,4)
var result2 = sumOfSquares(1,3)
console.log(result) //29
console.log(result2) //10
打分
評語
題干

如下代碼的輸出?為什么?

    console.log(a);
    var a = 1;
    console.log(b);

回答內容

console.log(a); // undefined。因為下面的var a=1相當于var a,a=1。即聲明了變量a也給a賦值了,因為變量提升的原因,所以在執行第一句時知道了a已經被聲明但是卻沒有被賦值。所以顯示為undefined。
var a = 1;
console.log(b);// 報錯,b is not defined。代碼中沒有聲明變量b也沒有對其賦值,所以顯示為b is not defined,而不是undefined。
打分
評語
題干

如下代碼的輸出?為什么?

    sayName('world');
    sayAge(10);
    function sayName(name){
        console.log('hello ', name);
    }
    var sayAge = function(age){
        console.log(age);
    };

回答內容

// hello world
// sayAge is not a function。error,因為下面這個是函數表達式,而函數表達式不會聲明提前,所以sayAge(10)在前面調用是無效的。
打分
評語
題干

寫一個函數squireArr,其參數是一個數組,作用是把數組中的每一項變為原值的平方

var arr = [3, 4, 6]
function squireArr( arr ){
  //補全
}
squireArr(arr)
console.log(arr)  // [9, 16, 36]

提示
arr 被修改了
回答內容

for(var i = 0; i < arr.length; i++){
arr[i] = arr[i] * arr[i];
}//補全
打分
評語
題干

如下代碼的輸出?為什么?

var x = 10
bar() 
function foo() {
  console.log(x)
}
function bar(){
  var x = 30
  foo()
}

回答內容

//10,
function foo() {
console.log(x)
}里面沒有x的賦值,向上找,全局變量里有賦值,所以是10.
打分
評語
題干

寫一個函數squireArr,其參數是一個數組,返回一個新的數組,新數組中的每一項是原數組對應值的平方,原數組不變

var arr = [3, 4, 6]
function squireArr( arr ){
  //補全
}
var arr2 = squireArr(arr)
console.log(arr)  // [3, 4, 6]
console.log(arr2)  // [9, 16, 36]

提示
原數組不變
回答內容

var newArr = [];
for(var i = 0; i < arr.length; i++){
newArr[i] = arr[i] * arr[i];
}
return newArr;
打分
評語

可以使用 map
題干

如下代碼的輸出?為什么?

var x = 10;
bar() 
function bar(){
  var x = 30;
  function foo(){
    console.log(x) 
  }
  foo();
}

回答內容

// 30
function foo() {
console.log(x)
}里面沒有x的賦值,向上找var x=30,所以是30.
打分
評語
題干

如下代碼的輸出?為什么?

var a = 1
function fn1(){
  function fn2(){
    console.log(a)
  }
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() //輸出多少

回答內容

// 2
function fn2(){
console.log(a)
}里沒有賦值,向上找,fn1里有var a=2,所以是2
打分
評語
題干

如下代碼的輸出?為什么?

var a = 1
function fn1(){
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
function fn2(){
  console.log(a)
}
var fn = fn1()
fn() //輸出多少

回答內容

//1
function fn2(){
console.log(a)
}里沒有賦值,向上找,全局變量里var a=1,所以是1
打分
評語
題干

如下代碼的輸出?為什么?

var a = 1
function fn1(){

  function fn3(){
    function fn2(){
      console.log(a)
    }
    fn2()
    var a = 4
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() //輸出多少

回答內容

// undefined
function fn2(){
console.log(a)
}里面沒有,向上找,fn3里雖然有var a=4,對自身fn3沒有影響,但對內嵌函數有影響。
聲明的最終目的是為了提前使用,即在定義之前使用,如果不需要提前使用就沒有單獨聲明的必要,變量是如此,函數也是如此,所以聲明不會分配存儲空間,只有定義時才會分配存儲空間。函數是單向線,從上向下解析的。
打分
評語
題干

如下代碼的輸出?為什么?

var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);

回答內容

console.log(obj1 == obj2);
//false 因為obj1和obj2的指針所指向的在堆中的地址不一樣
console.log(obj1 = obj2);
// {a:1,b:2} 將obj2賦值給obj1
console.log(obj1 == obj2);
//由于obj2賦值給obj1,兩個對象所指向的在堆中的地址一致
打分
評語
題干

如下代碼的輸出?為什么?

var a = 1
var c = { name: 'jirengu', age: 2 }

function f1(n){
  ++n
}
function f2(obj){
  ++obj.age
}

f1(a) 
f2(c) 
f1(c.age) 
console.log(a) 
console.log(c)

回答內容

1  //全局變量
[object Object] {
  age: 3,
  name: "jirengu"
}  //全局對象,向上找是var c = { name: 'jirengu', age: 2 },而f2(c) ,函數執行 ++obj.age,所以 age: 3。

打分
評語
題干

寫一篇關于作用域鏈的博客,不少于200字,附上博客鏈接
回答內容

http://www.lxweimin.com/p/22f4115d01e6
打分
評語
題干

寫一個深拷貝函數。
回答內容

function deepCopy(oldObj) {
var newObj = {};
for(var key in oldObj) {
if(typeof oldObj[key] === 'object') {
newObj[key] = deepCopy(oldObj[key]);
}else{
newObj[key] = oldObj[key];
}
}
return newObj;
}
打分
評語

typeof null 也是 object

<j-panel-body data-v-1a8c3c17="" class="panelBody"><form data-v-1a8c3c17="" class="el-form">

  1. <label class="el-form-item__label" style="width: 6em;">題干</label>

    立即執行函數表達式是什么?有什么作用?

    <label class="el-form-item__label" style="width: 6em;">回答內容</label>

    (function(){alert('我是匿名函數')}())

    創建一個獨立的作用域。
    這個作用域里面的變量,外面訪問不到(即避免「變量污染」)。

    <label class="el-form-item__label" style="width: 6em;">打分</label>

    <label class="el-form-item__label" style="width: 6em;">評語</label>

    ok

  2. <label class="el-form-item__label" style="width: 6em;">題干</label>

    求n!,用遞歸來實現。

    <label class="el-form-item__label" style="width: 6em;">回答內容</label>

    function factorial(n){
    if(n === 1){
    return 1
    }
    return n * factorial(n-1)
    }
    factorial(3) //6

    <label class="el-form-item__label" style="width: 6em;">打分</label>

    <label class="el-form-item__label" style="width: 6em;">評語</label>

    沒有考慮 n為0 的情況

  3. <label class="el-form-item__label" style="width: 6em;">題干</label>

    以下代碼輸出什么?

        function getInfo(name, age, sex){
            console.log('name:',name);
            console.log('age:', age);
            console.log('sex:', sex);
            console.log(arguments);
            arguments[0] = 'valley';
            console.log('name', name);
        }
    
        getInfo('饑人谷', 2, '男');
        getInfo('小谷', 3);
        getInfo('男');
    
    

    <label class="el-form-item__label" style="width: 6em;">回答內容</label>

    "name:"
    "饑人谷"
    "age:"
    2
    "sex:"
    "男"
    [object Arguments] {
    0: "饑人谷",
    1: 2,
    2: "男"
    }
    "name"
    "valley"
    "name:"
    "小谷"
    "age:"
    3
    "sex:"
    undefined
    [object Arguments] {
    0: "小谷",
    1: 3
    }
    "name"
    "valley"
    "name:"
    "男"
    "age:"
    undefined
    "sex:"
    undefined
    [object Arguments] {
    0: "男"
    }
    "name"
    "valley"

    <label class="el-form-item__label" style="width: 6em;">打分</label>

    <label class="el-form-item__label" style="width: 6em;">評語</label>

  4. <label class="el-form-item__label" style="width: 6em;">題干</label>

    寫一個函數,返回參數的平方和?

       function sumOfSquares(){
       }
       var result = sumOfSquares(2,3,4)
       var result2 = sumOfSquares(1,3)
       console.log(result)  //29
       console.log(result2)  //10
    
    

    <label class="el-form-item__label" style="width: 6em;">回答內容</label>

    function sumOfSquares(){
    var sum=0;
    for(var i=0;i<arguments.length;i++){
    sum=sum+arguments[i]*arguments[i];
    }
    return sum;
    }
    var result = sumOfSquares(2,3,4)
    var result2 = sumOfSquares(1,3)
    console.log(result) //29
    console.log(result2) //10

    <label class="el-form-item__label" style="width: 6em;">打分</label>

    <label class="el-form-item__label" style="width: 6em;">評語</label>

  5. <label class="el-form-item__label" style="width: 6em;">題干</label>

    如下代碼的輸出?為什么?

        console.log(a);
        var a = 1;
        console.log(b);
    
    

    <label class="el-form-item__label" style="width: 6em;">回答內容</label>

    console.log(a); // undefined。因為下面的var a=1相當于var a,a=1。即聲明了變量a也給a賦值了,因為變量提升的原因,所以在執行第一句時知道了a已經被聲明但是卻沒有被賦值。所以顯示為undefined。
    var a = 1;
    console.log(b);// 報錯,b is not defined。代碼中沒有聲明變量b也沒有對其賦值,所以顯示為b is not defined,而不是undefined。

    <label class="el-form-item__label" style="width: 6em;">打分</label>

    <label class="el-form-item__label" style="width: 6em;">評語</label>

  6. <label class="el-form-item__label" style="width: 6em;">題干</label>

    如下代碼的輸出?為什么?

        sayName('world');
        sayAge(10);
        function sayName(name){
            console.log('hello ', name);
        }
        var sayAge = function(age){
            console.log(age);
        };
    
    

    <label class="el-form-item__label" style="width: 6em;">回答內容</label>

    // hello world
    // sayAge is not a function。error,因為下面這個是函數表達式,而函數表達式不會聲明提前,所以sayAge(10)在前面調用是無效的。

    <label class="el-form-item__label" style="width: 6em;">打分</label>

    <label class="el-form-item__label" style="width: 6em;">評語</label>

  7. <label class="el-form-item__label" style="width: 6em;">題干</label>

    寫一個函數squireArr,其參數是一個數組,作用是把數組中的每一項變為原值的平方

    var arr = [3, 4, 6]
    function squireArr( arr ){
      //補全
    }
    squireArr(arr)
    console.log(arr)  // [9, 16, 36]
    
    

    <label class="el-form-item__label" style="width: 6em;">提示</label>

    arr 被修改了

    <label class="el-form-item__label" style="width: 6em;">回答內容</label>

    for(var i = 0; i < arr.length; i++){
    arr[i] = arr[i] * arr[i];
    }//補全

    <label class="el-form-item__label" style="width: 6em;">打分</label>

    <label class="el-form-item__label" style="width: 6em;">評語</label>

  8. <label class="el-form-item__label" style="width: 6em;">題干</label>

    如下代碼的輸出?為什么?

    var x = 10
    bar() 
    function foo() {
      console.log(x)
    }
    function bar(){
      var x = 30
      foo()
    }
    
    

    <label class="el-form-item__label" style="width: 6em;">回答內容</label>

    //10,
    function foo() {
    console.log(x)
    }里面沒有x的賦值,向上找,全局變量里有賦值,所以是10.

    <label class="el-form-item__label" style="width: 6em;">打分</label>

    <label class="el-form-item__label" style="width: 6em;">評語</label>

  9. <label class="el-form-item__label" style="width: 6em;">題干</label>

    寫一個函數squireArr,其參數是一個數組,返回一個新的數組,新數組中的每一項是原數組對應值的平方,原數組不變

    var arr = [3, 4, 6]
    function squireArr( arr ){
      //補全
    }
    var arr2 = squireArr(arr)
    console.log(arr)  // [3, 4, 6]
    console.log(arr2)  // [9, 16, 36]
    
    

    <label class="el-form-item__label" style="width: 6em;">提示</label>

    原數組不變

    <label class="el-form-item__label" style="width: 6em;">回答內容</label>

    var newArr = [];
    for(var i = 0; i < arr.length; i++){
    newArr[i] = arr[i] * arr[i];
    }
    return newArr;

    <label class="el-form-item__label" style="width: 6em;">打分</label>

    <label class="el-form-item__label" style="width: 6em;">評語</label>

    可以使用 map

  10. <label class="el-form-item__label" style="width: 6em;">題干</label>

如下代碼的輸出?為什么?

```
var x = 10;
bar() 
function bar(){
  var x = 30;
  function foo(){
    console.log(x) 
  }
  foo();
}

```

<label class="el-form-item__label" style="width: 6em;">回答內容</label>

// 30
function foo() {
console.log(x)
}里面沒有x的賦值,向上找var x=30,所以是30.

<label class="el-form-item__label" style="width: 6em;">打分</label>

<label class="el-form-item__label" style="width: 6em;">評語</label>
  1. <label class="el-form-item__label" style="width: 6em;">題干</label>
如下代碼的輸出?為什么?

```
var a = 1
function fn1(){
  function fn2(){
    console.log(a)
  }
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() //輸出多少

```

<label class="el-form-item__label" style="width: 6em;">回答內容</label>

// 2
function fn2(){
console.log(a)
}里沒有賦值,向上找,fn1里有var a=2,所以是2

<label class="el-form-item__label" style="width: 6em;">打分</label>

<label class="el-form-item__label" style="width: 6em;">評語</label>
  1. <label class="el-form-item__label" style="width: 6em;">題干</label>
如下代碼的輸出?為什么?

```
var a = 1
function fn1(){
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
function fn2(){
  console.log(a)
}
var fn = fn1()
fn() //輸出多少

```

<label class="el-form-item__label" style="width: 6em;">回答內容</label>

//1
function fn2(){
console.log(a)
}里沒有賦值,向上找,全局變量里var a=1,所以是1

<label class="el-form-item__label" style="width: 6em;">打分</label>

<label class="el-form-item__label" style="width: 6em;">評語</label>
  1. <label class="el-form-item__label" style="width: 6em;">題干</label>
如下代碼的輸出?為什么?

```
var a = 1
function fn1(){

  function fn3(){
    function fn2(){
      console.log(a)
    }
    fn2()
    var a = 4
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() //輸出多少

```

<label class="el-form-item__label" style="width: 6em;">回答內容</label>

// undefined
function fn2(){
console.log(a)
}里面沒有,向上找,fn3里雖然有var a=4,對自身fn3沒有影響,但對內嵌函數有影響。
聲明的最終目的是為了提前使用,即在定義之前使用,如果不需要提前使用就沒有單獨聲明的必要,變量是如此,函數也是如此,所以聲明不會分配存儲空間,只有定義時才會分配存儲空間。函數是單向線,從上向下解析的。

<label class="el-form-item__label" style="width: 6em;">打分</label>

<label class="el-form-item__label" style="width: 6em;">評語</label>
  1. <label class="el-form-item__label" style="width: 6em;">題干</label>
如下代碼的輸出?為什么?

```
var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);

```

<label class="el-form-item__label" style="width: 6em;">回答內容</label>

console.log(obj1 == obj2);
//false 因為obj1和obj2的指針所指向的在堆中的地址不一樣
console.log(obj1 = obj2);
// {a:1,b:2} 將obj2賦值給obj1
console.log(obj1 == obj2);
//由于obj2賦值給obj1,兩個對象所指向的在堆中的地址一致

<label class="el-form-item__label" style="width: 6em;">打分</label>

<label class="el-form-item__label" style="width: 6em;">評語</label>
  1. <label class="el-form-item__label" style="width: 6em;">題干</label>
如下代碼的輸出?為什么?

```
var a = 1
var c = { name: 'jirengu', age: 2 }

function f1(n){
  ++n
}
function f2(obj){
  ++obj.age
}

f1(a) 
f2(c) 
f1(c.age) 
console.log(a) 
console.log(c)

```

<label class="el-form-item__label" style="width: 6em;">回答內容</label>

```
1  //全局變量
[object Object] {
  age: 3,
  name: "jirengu"
}  //全局對象,向上找是var c = { name: 'jirengu', age: 2 },而f2(c) ,函數執行 ++obj.age,所以 age: 3。

```

<label class="el-form-item__label" style="width: 6em;">打分</label>

<label class="el-form-item__label" style="width: 6em;">評語</label>
  1. <label class="el-form-item__label" style="width: 6em;">題干</label>
寫一篇關于作用域鏈的博客,不少于200字,附上博客鏈接

<label class="el-form-item__label" style="width: 6em;">回答內容</label>

[http://www.lxweimin.com/p/22f4115d01e6](http://www.lxweimin.com/p/22f4115d01e6)

<label class="el-form-item__label" style="width: 6em;">打分</label>

<label class="el-form-item__label" style="width: 6em;">評語</label>
  1. <label class="el-form-item__label" style="width: 6em;">題干</label>
寫一個深拷貝函數。

<label class="el-form-item__label" style="width: 6em;">回答內容</label>

function deepCopy(oldObj) {
var newObj = {};
for(var key in oldObj) {
if(typeof oldObj[key] === 'object') {
newObj[key] = deepCopy(oldObj[key]);
}else{
newObj[key] = oldObj[key];
}
}
return newObj;
}

<label class="el-form-item__label" style="width: 6em;">打分</label>

<label class="el-form-item__label" style="width: 6em;">評語</label>

typeof null 也是 object

</form></j-panel-body>

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,860評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,025評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,421評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,642評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,177評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,970評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,157評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,410評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,896評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,157評論 2 375

推薦閱讀更多精彩內容

  • 工廠模式類似于現實生活中的工廠可以產生大量相似的商品,去做同樣的事情,實現同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 7,799評論 2 17
  • 單例模式 適用場景:可能會在場景中使用到對象,但只有一個實例,加載時并不主動創建,需要時才創建 最常見的單例模式,...
    Obeing閱讀 2,088評論 1 10
  • 轉載請著名出處 GitHub-TYRMars 文章Github地址 JavaScript基礎知識剖析 01 01-...
    TYRMars閱讀 582評論 0 7
  • 基礎類型有哪些?復雜類型有哪些?有什么特征?5種簡單數據類型(基本數據類型):Undefined、Null、Boo...
    coolheadedY閱讀 324評論 0 0
  • 一、DOM:(1)定義:Dom是W3C(萬維網聯盟)的標準, Document Object Model(文檔對象...
    云淡風輕_301b閱讀 1,118評論 0 0