国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端學習日記(一)javascript基礎:變量的作用域

rollback / 1384人閱讀

摘要:張三李四李四李四鏈式作用域函數包含在函數中,這是函數所有局部變量對函數可見,但是相反是不行的。局部變量必須使用聲明,否則聲明的是全局變量。父級函數變量對所有子函數可見,子函數會一級一級向上尋找變量。

引言

一直從事服務端開發。由于近年來前端迅速發展,所以想入坑前端行列,雖然一直有接觸并開發前端相關的項目,但是想要做前端的工作決定系統的學習一下前端,就先從變量開始吧!

變量的作用域

在js中變量的作用域只有兩種,全局變量、局部變量

全局變量
在函數內,全局變量可以直接訪問

// 全局變量
var name = "張三"

function showName() {
  console.log(name);
}

showName(); // 張三

局部變量
自然局部變量不可以在函數外部訪問

// 局部變量
function showName2() {
  var name2 = "李四"
}

console.log(name2) // error: Uncaught ReferenceError: name2 is not defined

聲明局部變量必須使用 var,否則聲明的則是全局變量

// 局部變量
function showName3() {
  name3 = "王五"
}

showName3();

console.log(name3) // 王五

如果局部變量與全部變量名稱一樣會怎么樣呢?
js 不會像服務端語言那樣名稱一樣會產生沖突。通過下面的例子看到,函數會先找局部變量,也就是說局部變量的優先級要比全局變量的優先級要高。

var name = "張三"

function showName() {
  var name = "李四"
  console.log(name) // 李四
}

showName();

console.log(name) // 王五

剛才說過局部變量必須使用var聲明,否則聲明的是全局變量。如果已存在相同名稱的全局變量會怎么樣呢?
在函數執行后,會改變全局變量的值。

var name = "張三"

function showName() {
  name = "李四"
  console.log(name) // 李四
}

showName();

console.log(name) // 李四

鏈式作用域
showName2 函數包含在 showName 函數中,這是 showName 函數所有局部變量對 showName2 函數可見,但是相反是不行的。
通過情景三,可以看出來子函數回向父級一級一級尋找變量,所有父級的變量對子級都是可見的,這就是js的 “鏈式作用域”

// 情景一
function showName() {
  var name = "張三"
  function showName2() {
    var name = "李四"
    return name
  }
  return showName2()
}

var result = showName()
console.log(result) // 李四
// 情景二
function showName() {
  var name = "張三";
  function showName2() {
    return name;
  }
  return showName2()
}

var result = showName()
console.log(result) // 張三
// 情景三
function showName() {
  var name = "張三";
  function showName2() {
    function showName3() {
      return name;
    }
    return showName3()
  }
  return showName2();
}

var result = showName()
console.log(result) // 張三

js 作用域分全局變量與局部變量。

局部變量必須使用 var 聲明,否則聲明的是全局變量。

函數可以直接訪問全局變量,外部不可使用局部變量。

全局變量與局部變量名稱可以重復,局部變量優先級更高。

父級函數變量對所有子函數可見,子函數會一級一級向上尋找變量。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103238.html

相關文章

  • 前端面試日記

    摘要:組件化編碼的一切都是基于組件的。屬性返回目標節點的前一個兄弟節點。如果目標節點前面沒有同屬于一個父節點的節點,將返回屬性是一個只讀屬性。而當變量離開環境時,則將其標記為離開環境。 第一次寫面試經歷,雖然之前有過一些電話面試經歷,但相對而言感覺此次的經歷對自己收獲還是比較大,這里留下面經當作日記吧!(面試時間:2018-6-12 下午2:10;時長:50min;公司:*) 1、說說Rea...

    warkiz 評論0 收藏0
  • 前端面試日記

    摘要:組件化編碼的一切都是基于組件的。屬性返回目標節點的前一個兄弟節點。如果目標節點前面沒有同屬于一個父節點的節點,將返回屬性是一個只讀屬性。而當變量離開環境時,則將其標記為離開環境。 第一次寫面試經歷,雖然之前有過一些電話面試經歷,但相對而言感覺此次的經歷對自己收獲還是比較大,這里留下面經當作日記吧!(面試時間:2018-6-12 下午2:10;時長:50min;公司:*) 1、說說Rea...

    zhunjiee 評論0 收藏0
  • 前端學習日記(二)javascript基礎:閉包是什么?

    摘要:閉包在解釋閉包,指的是詞法表示包括不被計算的變量的函數,也就是說,函數可以使用函數之外定義的變量。再把這個函數賦值給多個變量執行時,會依次創建多個閉包引入的變量副本,并且相互不會污染。 閉包在 ECMAScript 解釋 閉包,指的是詞法表示包括不被計算的變量的函數,也就是說,函數可以使用函數之外定義的變量。地址: https://www.w3cschool.cn/ecma... 下面...

    flybywind 評論0 收藏0
  • 前端面試日記(二)

    摘要:面試時間晚上時長小時分鐘公司,一面一簡單的介紹下自己介紹的真的很簡單。。。。。。二平時都是怎么學習前端的學習前端的話,我主要是以書籍為主然后是網站視頻博客文檔等學習理論,之后再通過代碼實踐。。。 大概是在6月11號在Boss直聘投的簡歷,6月12號中午收到電話約的面試時間,剛開始說是13號晚上7點;后面可能時間有變,中午來了個電話說改到9-10點;怎么說算是第一次面試自己目標公司之一吧...

    huayeluoliuhen 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<