從零開始學JavaScript三(變量)

 一、變量

ECMAscript變量是松散型變量,所謂松散型變量,就是變量名稱可以保存任何類型的數據,每個變量僅僅是一個用于保存值的占位符。

定義變量時要使用var操作符

如:

var message;
/*定義一個名為message的變量,該變量可以用來保存任何值,未初始化的變*量會保存一個特殊的值-undefined
*/

?二、局部變量 ??

可以聲明變量里同時初始化

function test(){var message='hello';  //定義局部message變量,并初始值為helloalert(message);       //將message內容彈出
    }test();
</script>

錯誤的寫法

function test(){var message='hello';  //定義局部message變量,并初始值為hello
    }test();
alert(message);       //錯誤

由以上兩個例子可以看出,如果在一個函數中使用var 定義一個變量,那么該變量在函數退出后會被銷毀

?三、定義全局變量

function test(){message='hello';  //全局message變量,并初始值為hello
    }test();
alert(message);       //hello

這里因為省略了var,因而message就成了全局變量,這樣只要調用過一次test()函數,這個變量就有了定義,就可以在函數外部的任何地方被訪問

省略var 定義變量:只要調用一次定義該變量的函數,全局范圍內都可訪問該變量。這種定義變量的方法也被成為隱式聲明

?四、作用域和范圍

?

<SCRIPT  type="text/javascript"> 
//定義一個輸出函數 
function outPut(s){ 
document.writeln(s); 
} 
//全局變量 
var i=0; 
//定義外部函數 
function outer(){ 
//訪問全局變量 
outPut(i); // 0 
//定義一個類部函數 
function inner(){ 
//定義局部變量 
var i = 1; 
// i=1; 如果用隱式申明 那么就覆蓋了全局變量i 
outPut(i); //1 
} 
inner(); 
outPut(i); //0 
} 
outer(); 
</SCRIPT> 

?

結果:0,1,0

<script type="text/javascript">function demoFunction(s){ document.writeln(s) 
} var i=0; function test(){ demoFunction(i); function innerFunction(){ demoFunction(i); var i=1; demoFunction(i);} innerFunction(); demoFunction(i);
} 
test();
</script>

結果:0 undefined 1 0

?JS函數體中聲明的本地變量在整個函數中都有效,因此在上面代碼中var i = 1 ;在inner函數中都有效,實際上顯式聲明的變量i是在預編譯時就已經編譯到調用對象中了,不同于隱式聲明變量在解釋時才被定義為全局變量,只是在調用outPut(i)時,還沒有將它初始化變量,此時的本地變量i是未賦值變量,而不是未定義變量,因此輸出了undefined。上面的代碼等效于下面代碼:

function inner(){ 
var i; //定義但不賦值 
outPut(i); //undefiend 
i=1; 
outPut(i); //1 
} 

?

?

?

轉載于:https://www.cnblogs.com/liunanjava/p/4237677.html

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

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

相關文章

DES加密過程例解

DES加密算法是最被廣泛使用的對稱加密算法&#xff0c;通過示例來演示DES、TribleDES&#xff08;3Key&#xff09; DES-ECB&#xff1a; 按8字節為單位進行加密&#xff0c;不足8字節補0key&#xff1a; 1111111111111111indata: 2222222222222222 OutData: 950973182317F8…

linux在雙系統中消失了,雙系統重新安裝windows后,ubuntu選項消失

1、首先用LiveCD進入ubuntu2、打開終端&#xff0c;&#xff0c;輸入&#xff1a;fdisk -l 查看自己linux的分區情況&#xff0c;我的分了4個區&#xff0c;swap&#xff0c;boot&#xff0c;/&#xff0c;home&#xff0c;對應的分別是&#xff1a;/dev/sda9 swap…

Cydia源局域網化

2019獨角獸企業重金招聘Python工程師標準>>> 步驟 在網址根目錄創建文件夾cydia&#xff0c;把你的deb文件放到 cydia/debs/ 文件夾下。在終端cd進入cydia文件夾輸入命令&#xff1a;dpkg-scanpackages debs /dev/null > Packages輸入命令&#xff1a;tar zcvf P…

前綴++ 后綴++ 運算符重載

下面例子程序中 const Fraction operator (int) 中 int不過是個啞元&#xff08;dummy&#xff09;,是永遠用不上的 它只是用來判斷&#xff0b;&#xff0b;是prefix 還是 postfix 記住&#xff0c;如果有啞元&#xff0c;則是postfix,否則&#xff0c…

固定資產調整對資產折舊的影響

固定資產折舊計提方法 一、原值增加&#xff1a; 1、已攤銷資產&#xff1a; 攤銷調整時間設在當期&#xff1a;(1078135) 在進行原值增加后&#xff0c;攤銷日期不變時&#xff0c;折舊在當月體現。 每月新增月折舊調增金額*(1-殘值率)/(折舊年限*12-已提折舊月份的個數) 例&a…

linux系統中 庫分為靜態庫和,Linux系統靜態庫與共享庫

8種機械鍵盤軸體對比本人程序員&#xff0c;要買一個寫代碼的鍵盤&#xff0c;請問紅軸和茶軸怎么選&#xff1f;This article mainly introduces the statics library and shared library on Linux and has done some experiments for better comprehension.Static library&am…

軟件工程概論作業01

軟件工程作業01 寫一個能自動生成三十道小學四則運算題目的 “軟件”&#xff0c;要求&#xff1a;除了整數以外&#xff0c;還要支持真分數的四則運算&#xff08;需要驗證結果的正確性&#xff09;、題目避免重復、可定制出題的數量。 思路&#xff1a;隨機生成兩個數進行計算…

成員指針運算符 .* 和 -*

轉載&#xff1a; http://www.groad.net/bbs/thread-5548-1-1.html 有一種特殊的指針叫做成員指針&#xff0c;它們通常指向一個類的成員&#xff0c;而不是對象中成員的特定實例。 成員指針并不是真正的指針&#xff0c;它只是成員在對象中的偏移量&#xff0c;它們分別是&am…

捕捉Entity framework 6的詳細異常提示

采用 try{}catch (Exception e){throw;}不能捕捉到詳細異常提示, e.message的內容為"Validation failed for one or more entities. See EntityValidationErrors property for more details." 如果需要獲取詳細的異常提示,采用 1 try2 {3 return…

8.16——熟悉安裝linux系統

一、linux的版本——CentOS CentOS&#xff08;Community ENTerprise Operating System&#xff09;是Linux發行版之一&#xff0c;它是來自于Red Hat Enterprise Linux依照開放源代碼規定釋出的源代碼所編譯而成。由于出自同樣的源代碼&#xff0c;因此有些要求高度穩定性的服…

linux中設置默認權限的命令,Linux默認權限掩碼

Linux教程Linux教程&#xff1a;http://www.fdlly.com/m/linux文章目錄默認權限掩碼設置權限掩碼以文字的方式設置權限掩碼查看系統當前的權限掩碼默認權限掩碼當我們創建文件或目錄時&#xff0c;系統會自動根據權限掩碼來生成預設權限&#xff1b;默認情況下的umask值是022(可…

percona-toolkit工具包安裝

percona-toolkit工具包同percona-xtrabackup一樣都是用Perl寫的工具包&#xff0c;percona-toolkit工具包是一組高級的管理mysql的工具包集&#xff0c;可以用來執行各種通過手工執行非常復雜和麻煩的mysql和系統任務&#xff0c;在生產環境中能極大的提高效率&#xff0c;安裝…

C++允許重載的運算符和不允許重載的運算符

C中絕大部分的運算符允許重載&#xff0c;具體規定見表10.1。 表10.1 C允許重載的運算符雙目算術運算符 (加)&#xff0c;-(減)&#xff0c;*(乘)&#xff0c;/(除)&#xff0c;% (取模) 關系運算符 (等于)&#xff0c;! (不等于)&#xff0c;< (小于)&#xff0c;> (大…

Google Mesa概覽

Google Mesa的文章&#xff1a;https://research.google.com/pubs/pub42851.html https://gigaom.com/2014/08/07/google-shows-off-mesa-a-super-fast-data-warehouse-that-runs-across-data-centers/ 為什么未來的Hadoop是實時的&#xff1a; https://gigaom.com/2013/03/0…

C++數組參數應用方式探討(轉)

對于經驗豐富的編程人員來說&#xff0c;C編程語言應該是他們經常使用于程序開發的一種實用性語言。那么&#xff0c;在C中&#xff0c;C數組參數永遠不會按值傳遞。它是傳遞第一個元素&#xff08;準確地說是第0個&#xff09;的指針。 例如&#xff0c;如下聲明&#xff1a; …

一篇關于兼容問題的基礎總結

1.添加兼容文件(以 es5-shim 為例) 方法一&#xff1a; <script src"https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.7/es5-shim.min.js"></script>在你的開發中&#xff0c;在需要為他做兼容的文件引入改文件 方法二(以模塊引入)&#xff1a; 在…

假如生活欺騙了你

假如生活欺騙了你&#xff0c; 不要悲傷&#xff0c;不要心急&#xff01; 憂郁的日子里需要鎮靜&#xff1a; 相信吧&#xff0c;快樂的日子將會降臨。 心兒永遠向往著未來&#xff1b; 現在卻常是憂郁&#xff0c; 一切都將會過去&#xff1b; 而那過去了的&#xff0c…

linux編譯mmc驅動,Embeded linux之MMC驅動

一、注冊平臺設備platform_device_register(&usr_mci_device);二、填寫平臺設備結構體static struct platform_device usr_mci_device {.name "xxx",.id 0,.dev {.release usr_mci_platdev_release,.dma_mask &usr_mmc_dmama…

redis windows下的環境搭建

先說下安裝吧&#xff01;感覺這東西跟mongodb差不多&#xff0c;安裝和布置挺簡單&#xff0c;下載地址&#xff1a;https://github.com/dmajkic/redis/downloads 下載下來的包里有兩個&#xff0c;一個是32位的&#xff0c;一個是64位的。根據自己的實情情況選擇&#xff0c;…

application/json 四種常見的 POST 提交數據方式

四種常見的 POST 提交數據方式 HTTP/1.1 協議規定的 HTTP 請求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 這幾種。其中 POST 一般用來向服務端提交數據&#xff0c;本文主要討論 POST 提交數據的幾種方式。 我們知道&#xff0c;HTTP 協議是以 ASCII 碼傳…