setlocal是設定頁面中的變數引數,只要將其設定在#define body() #end 之內,則在整個頁面中都可以取得到,但是剛才遇到了乙個新的問題,就是在for迴圈中去改變成員變數中的值,可是除錯之後才發現退出for迴圈之後,其值並沒有改變,只是在for迴圈之內有效具體原因如下:
#for、#include、#define這三個指令中會開啟新的變數名作用域,#set指令會首先在本作用域中查詢變數是否存在,如果存在則對本作用域中的變數進行操作,否則繼續向上層作用域查詢,找到則操作,如果找不到,則將變數定義在頂層作用域中,這樣的設計非常有利於在模板中傳遞變數的值。
當需要明確需要在本層作用域賦值時,需要使用#setlocal指令,該指令所需引數與用法與#set指令完全一樣,只不過作用域被指定為當前作用域。#setlocal指令通常用於#define、#include指令之內,實現通用功能,從而希望其中的變數名不會與上層作用域發生命名上的衝突。
所以,如果想要定義全域性的變數,並且根據不同的情況動態的去改變,所以可以用#set
Javascript的作用域域作用域鏈的理解
如何解析一段可執行 分了兩個階段 解析 和執行 其中解析 可以理解為記名字,就是先把關鍵字var和function定義的變數名登記了下來,這也就有了變數提公升這一說。在執行 階段才是真正的執行賦值,運算等操作。暫不解析這幾個名詞,先來看乙個例子。var scope global function f...
作用域 的作用
1 作用域符號 的前面一般是類名稱,後面一般是該類的成員名稱,c 為例避免不同的類有名稱相同的成員而採用作用域的方式進行區分 如 a,b表示兩個類,在a,b中都有成員member。那麼 a member就表示類a中的成員member b member就表示類b中的成員member 2 全域性作用域符...
作用域 作用域鏈
理解 就是一塊 地盤 乙個 段所在的區域 它是靜態的 相對於上下文物件 在編寫 時就確定了 分類全域性作用域 函式作用域 沒有塊作用域 es6有了 作用隔離變數,不同作用域下同名變數不會有衝突 區別1全域性作用域之外,每個函式都會建立自己的作用域,作用域在函式定義時就已經確定了。而不是在函式呼叫時 ...