簡體   English   中英

在Node.js上聲明VAR

[英]Declaration of a VAR on Node.js

我正在學習Node.js。 我正在使用的書上有一條線,我不確定我確切地知道它是如何工作的並且正在尋找確認。

該行是:

var user = req.user = users[req.params.name];

我在Google上進行了一些研究,並且我相信這種工作方式是:

第一步將將users [request.params.name]的內容復制到req.user,然后第二步將req.user的內容復制到user。 最終用戶== users [req.params.name];

能否請您確認我做對了,否則請解釋這條線的工作方式?

謝謝

本質上就是這樣。 您所擁有的是復合作業。 賦值表達式的結果是被賦值,因此該值可以是另一個賦值表達式的右側。

但實際上在這之前還有其他事情發生:在當前上下文中定義變量user 這是詳細的操作順序:

  1. 輸入上下文后,變量user的定義值為undefined 這發生在上下文中的任何分步代碼發生之前。

  2. 當執行游標在逐步執行代碼中到達該代碼時,則:

    1. 在變量req上查找屬性params

    2. req.params的結果中req.params屬性name

    3. 名稱由該值定義的屬性( req.params.name的值)是從users變量引用的對象(大概)中檢索的。

    4. 結果值分配給req上的user屬性。

    5. 相同的值分配給user變量。

(我跳過了一些簿記步驟,以免過度進行前期准備。)

重要的是要注意,在上述步驟2.4和2.5之間, 不會req.user屬性中讀取req.user的值。 該值在2.3中確定,然后在2.4中使用,然后在2.5中再次使用。 也就是說, a = b = c; 一樣的b = c; a = b; b = c; a = b; 區別在於,后者是從第二個賦值中的b中檢索值; 在前者中,不是,只是從b = c部分重用了。 現在,當它是一個簡單的屬性時,這種區別並不特別重要,但是,如果您使用的是屬性訪問器函數(不是Mozilla較早的JavaScript變體中的非標准類型,還是ECMAScript5的新標准類型),則區別不大。 。 直播實例的區別| 資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM