Javascript之全局變量和局部變量部分講解

  以此文作為自己學習的一個總結。

????? 關于全局變量和局部變量的一句簡單的定義:在函數外聲明的變量都為全局變量,在函數內聲明的為局部變量。

?

???? 一、局部變量和全局變量重名會覆蓋全局變量????

1 var a = 1;  
2 function test1() {  
3   var a = 2;  
4   alert(a);  
5 }  
6 test1();// 2  

????? 這里的函數中的定義的a是局部變量,它的作用域為函數{}之間,函數外定義的a為全局變量,它的作用域為整個程序(描述有點不準確)。在函數中的局部變量和全局變量重名,局部變量會覆蓋全局變量。

?

????? 二、提到全局變量與局部變量不得不說明的一個知識點就是變量提升(這是一個坑)。‘與C/C++逐行執行代碼不同,JS引擎的工作方式是,先獲取所有被聲明的變量再逐一執行,所有變量的聲明語句都會被提升到當前代碼塊的頭部’。注:代碼塊指的是function的一個{},通常的if、while、for的{}中變量不會提升。

了解了變量提升了之后我們用以下代碼來演示:

1 var a = 1;  
2 function test1() {  
3     alert(a);  
4     var a = 2;  
5     alert(a);  
6 }  
7 test1();   
8 alert(a);//undefined  2  1

為什么結果不是1? 2? 1呢?原因就在于代碼提升。由于代碼提升的效果所以實際執行的代碼是這樣的:

?

1 var a = 1;  
2 function test1() {  
3    var a;//局部變量與全局變量重名時會覆蓋全局變量,此時的a只有聲明卻未定義  
4     alert(a);//所以執行alert值為undefined  
5     a = 2;  
6     alert(a);  
7 }  
8 test1();  
9 alert(a);//undefined  2  

?

轉載于:https://www.cnblogs.com/wind-lanyan/p/wind-lanyan.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254835.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254835.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254835.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

XML-RPC使用手冊

內容列表 Preface: About This Manual Introduction to XML-RPC for C/C What is XML-RPC? How Does XML-RPC For C/C Help? More Information On XML-RPC For C/CThe Xmlrpc-c Function Libraries C Libraries C LibrariesUtility Programs xmlrpc xmlrpc_dumpserverAlterna…

利用ffmpeg來進行視頻解碼的完整示例代碼(H.264)

Decode() { FILE * inpf; int nWrite; int i,p; int nalLen; unsigned char* Buf; int got_picture, consumed_bytes; unsigned char *DisplayBuf; DisplayBuf(unsigned char *)malloc(60000); char outfile[] "test.pgm"; //1.打開輸入文件 inpf fopen("test…

如何成為非標行業的大拿

1,選一個好的舞臺(工作環境),有個廣告詞叫:‘心有多大,舞臺就有多大’,我想變個說法叫‘舞臺越大,心就越大’。決定你表演效果的舞臺,你如果選擇…

TCP UDP HTTP 的關系和區別

TCP UDP HTTP 三者的關系: TCP/IP是個協議組,可分為四個層次:網絡接口層、網絡層、傳輸層和應用層。 在網絡層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。 在傳輸層中有TCP協議與UDP協議。 在應用層有HTTP、FTP、TELNET、SMTP、DNS等協議。 TCP…

微信開放平臺全網發布時,檢測失敗 —— C#

主要就是三個:返回API文本消息,返回普通文本消息,發送事件消息 --會出現失敗的情況 (后續補充說明:出現檢測出錯,不一定是代碼出現了問題,也有可能是1.微信方面檢測時出現服務器請求失敗&…

halcon reduce_ocr_class_svm 縮減基于SVM的OCR分類器。

目錄reduce_ocr_class_svm(算子)描述參數reduce_ocr_class_svm(算子) reduce_ocr_class_svm - 縮減基于SVM的OCR分類器。 reduce_ocr_class_svm(:: OCRHandle,Method,MinRemainingSV&#xff…

Zabbix 釘釘報警

話不多說,咱們直接進入正題釘釘報警時基于zabbix,訪問釘釘應用接口去推送的報警消息,所以我們需要一個在釘釘創建一個報警應用1、 我做的釘釘報警是基于釘釘自定義應用進行推送的所以需要登錄釘釘管理后臺進行創建(zabbix自定義應…

七大因素阻礙非標自動化行業發展,那么應對的策略是什么呢?

 非標自動化機械相對于標準機械而言,是可以根據企業需要量身定做的設備,可以實現標準機械所不能實現的一些功能,實現標準件不可能達到的產量。例如在注塑行業中,眾多注塑企業根據自身實際情況通過制造業自…

單播、多播(組播)和廣播的區別

單播、多播和廣播單播”(Unicast)、“多播”(Multicast)和“廣播”(Broadcast)這三個術語都是用來描述網絡節點之間通訊方式的術語。那么這些術語究竟是什么意思?區別何在?1.單播&am…

數據庫資源博客---小麥苗BEST

http://blog.csdn.net/lihuarongaini/article/details/60584577 http://blog.csdn.net/lihuarongaini/article/details/68485838轉載于:https://www.cnblogs.com/zengkefu/p/6718754.html

halcon write_ocr_class_svm 將OCR分類器寫入文件

目錄write_ocr_class_svm(運算符)描述參數write_ocr_class_svm(運算符) write_ocr_class_svm - 將OCR分類器寫入文件。 write_ocr_class_svm(:: OCRHandle,FileName ? 描述 write_ocr_class_svm將OCR分…

jQuery插件備忘

jQuery BlockUI Plugin 遮罩插件 http://malsup.com/jquery/block/ artDialog是一個基于javascript編寫的對話框組件,它擁有精致的界面與友好的接口 …

于敦德:途牛五大戰略縱深不懼同質化競爭

于敦德說,途牛已經在目的地、出發地、產品系列、客戶和品牌五個領域建立起了縱深壁壘,不擔心任何局部競爭,將堅決把局部同質化戰爭打到底。 一個行業的兩種公司 包括旅游在內的很多行業通常都有兩種公司:…

活在當下吧

‘’你得為你自己而活,想要什么就去爭取,不要干等著以為別人會施舍給你,也不要在意別人的眼光和看法,你首先得考慮的是你自己。” “你要明白,只有當你自己在乎自己的時候,別人才會用正眼看你,才…

ptime概述

官方給出的ptime的定義是:ptime gives the length of time in milliseconds represented by themedia in a packet。簡單來講就是一個數據包中媒體的時長,以毫秒為單位。比如:ptime:20就是定義為20毫秒。 每種媒體的時間是不一樣。比如&#…

halcon clear_ocr_class_svm 清除基于SVM的OCR分類器

目錄clear_ocr_class_svm(算子)描述參數:clear_ocr_class_svm(算子) clear_ocr_class_svm - 清除基于SVM的OCR分類器。 clear_ocr_class_svm(:: OCRHandle ? 描述 clear_ocr_class_svm清除OCRHandle給…

自定義線程的方式

2019獨角獸企業重金招聘Python工程師標準>>> package com.javaxxz.test;public class Demo extends Thread {/*** 創建線程的方式* 方式一:* 1、自定義一個類繼承Thread類* 2、重寫Thread類的run方法,把自定線程的任務代碼寫在run方法中* …

如何使用思維導圖

思?維?導?圖?比?較?容?易?,?因?為?我?們?平?時?都?是?這?樣?思?考?,?但?參?考?一?些?思?維?導?圖?練?習?案?例?,?還?是?有?幫?助?的?,?使?我?們?做?的?更?好?!

Linux下基于C/C++的Socket編程基礎

什么是Socket Socket接口是TCP/IP網絡的API,Socket接口定義了許多函數或例程,程序員可以用它們來開發TCP/IP網絡上的應用程序。要學Internet上的TCP/IP網絡編程,必須理解Socket接口。 Socket接口設計者最先是將接口放在Unix操作系統里面的。如…

tyvj 1059 過河 dp

P1059 過河時間: 1000ms / 空間: 131072KiB / Java類名: Main背景 NOIP2005 提高組 第二道描述 在河上有一座獨木橋,一只青蛙想沿著獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很討厭踩在這些石子上。由于橋的長度和青蛙一次跳過的距離都 是正整…