JavaScript的局部變數和全局變數小知識

来源:https://www.cnblogs.com/it-yjq/archive/2019/04/22/10751066.html
-Advertisement-
Play Games

(瞭解一下,避免初學者犯錯,但下麵定義全局變數的做法並不推薦,只是讓你們知道這是怎麼一回事) 如果在函數中使用var定義一個變數,那麼這個變數在函數退出後就會被銷毀,例如: function test () { var message = "Hi"; // 局部變數 (解釋:用var操作符定義的變數 ...


(瞭解一下,避免初學者犯錯,但下麵定義全局變數的做法並不推薦,只是讓你們知道這是怎麼一回事)

如果在函數中使用var定義一個變數,那麼這個變數在函數退出後就會被銷毀,例如:

function test () {

  var message = "Hi";   // 局部變數 (解釋:用var操作符定義的變數將成為定義該變數的作用域中的局部變數)

}

test();

alert (message); //此時發生錯誤

解釋:因為變數message是在函數中使用var定義的。當函數被調用時,就會創建該變數併為其賦值。而在此之後,即函數調用完之後,這個變數又會立即被銷毀,或者理解為該變數只在這個函數內有效,因此上面例子中的下一行代碼  alert (message);  會發生錯誤。

 

不過呢,我們將var操作符省略掉,就會創建出一個全局變數,例如:(這樣創建全局變數不推薦:首先難維護,其次給未經聲明的變數賦值在文檔模式中的嚴格模式上會拋出錯誤)

function test () {

  message = "Hi";   // 全局變數 

}

test();

alert (message); //此時會彈出Hi的彈框

省略了var操作符,message就成為了全局變數。所以,只要調用過一次test()函數,這個變數就有了定義,就可以在函數外部任何地方被訪問到


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 概要 狹義的 DOM API 僅僅包含 DOM 樹形結構相關的內容。 DOM 中的所有的屬性都是用來表現語義的屬性,CSSOM 的則都是表現的屬性。 CSSOM 是 CSS 的對象模型,在 W3C 標準中,它包含兩個部分: 描述樣式表和規則等 CSS 的模型部分(CSSOM) 跟元素視圖相關的 Vi ...
  • 示例代碼托管在: "http://www.github.com/dashnowords/blogs" 博客園地址: "《大史住在大前端》原創博文目錄" 華為雲社區地址: "【你要的前端打怪升級指南】" [TOC] 經過前面章節相對枯燥的練習,相信你已經能夠上手 的原生API了,那麼從這一節開始,我們 ...
  • 1 顯示和隱藏 1、show([speed,[easing],[fn]]) 顯示隱藏的匹配元素。 參數: (1) spend:三種預定速度之一的字元串('show','normal','fast')或表示動畫時長的毫秒數值 (2) easing:用來指定切換效果,預設為swing,可用參數linea ...
  • 最近在學習微信小程式的開發,讓我吐槽的是,都9102年了,怎麼還是有有時不能複製,有時不能打中文的bug呢,這個時候,你可以Ctrl+shift+w一下,如果還不行,那就得重啟了。。 進入正題吧,剛在寫代碼的時候,報了這樣一個錯誤 然後把this輸一下是undefined,因為這個時候this指向的 ...
  • 現在前端開發中需要通過Ajax發送請求獲取後端數據是很普遍的一件事情了,鑒於我平時在擼碼中用的是vue技術棧,今天這裡來談談我們常用的發Ajax請求的一個插件—axios。 現在網上可能發送Ajax請求有很多種插件,每種用法可能略有差異,大家只需挑選一種自己喜歡的即可。畢竟現在還有很多人使用jQue ...
  • 目標:實現一個正方形,這個正方形邊長等於 方法一:使用單位vw, (ps我覺得這個是最簡單的方法) html結構也很簡單,只有一個div即可 方法二: 使用padding-bottom 要點: html結構: css: 行了吧,兩種就可以了,你也可以使用margin,不過會有塌陷的危險,所以,就這兩 ...
  • 介紹 根據需求,我們希望建立一個多頁面的vue.js項目,如何改造單頁面vue.js項目為多頁面項目?跟著我的步伐看下去吧. 1.創建單頁面vue.js項目 簡單的記錄一下創建步驟: 2.配置路由映射 在utils.js文件末尾添加如下代碼,用於自動建立路由映射,如下圖: 修改webpack.bas ...
  • 錯誤:TypeError: d3.svg.line is not a function 原因: 你使用D3 v4 。從版本4開始,沒有 d3.svg ,因此出現錯誤消息。您要查找的行生成器現在定義為 d3.line()。 如果您仍在使用版本3,則會是 d3.svg.line()。 解決方法: 如果還 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...