JS中變量和函數的使用

一、變量的介紹

1、啥是變量?

??變量的本質是一塊有名字的內存空間。變量由變量名和變量值構成。變量名指的是內存空間的別名,一般位于賦值運算符的左邊;而變量值指的是內存空間中的數據,一般位于賦值運算符的右邊。例如:var balance =250;其中balance為變量名,是內存空間的別名;250為變量值,為數據。

2、如何聲明變量?

?暫且可將聲明理解為創造,當聲明變量時,使用關鍵字 var
?第一種:單獨聲明

   <script>var a = 32;  //聲明一個變量,變量名為a,變量值為32;var b = 45;  //聲明一個變量,變量名為b,變量值為45;</script>
復制代碼

?第二種:一個var多個聲明變量

<script>var a = 32,b = 45,c = 57;   //利用一個var來聲明多個變量用逗號隔開var x = 123,y = 245,z = 100;  //此寫法與上面意思一樣寫法不同而已
</script>
復制代碼

?第三種:重復聲明

<script>var a = 120; var a = 356;   //這些指令表明使用同一變量名聲明兩次,造成重復
</script>
復制代碼

?第四種:遺漏聲明

<script>var m = 12;var n = 32;alert(m)  //可彈出m的值,卻遺漏了下面n的值
</script>
復制代碼

?注意細節:
??1.在JS中重復聲明雖然是允許的,但在開發中,不要這樣用;
??2.在JS中遺漏聲明也是允許,但在實際開發時, 也是要盡量避免的;
??3.在JS中,可以通過alert(),來彈出一個變量的值。

3、聲明變量的特征有?

特征1:如果僅僅是聲明變量,那么變量是有默認值

<script>var a;   // 如果你僅僅是聲明一個變量,并非賦值,那么它的默認值為undefinedconsole.log(a)  // 打印出a的值
</script>
復制代碼

特征2:使用var 聲明的變量可以進行提升,提升就是把加var的變量提前最前面

解析:JS代碼在執行之前有一個預編譯,預編譯做了兩件事:
??(1)把加var的變量提升,提升的僅僅是聲明,而沒有賦值部分;
??(2)把函數提升到了代碼段(一個script標簽就是一個代碼段)的最前面。 當預解析完后,才會執行JS代碼;
??(3)當函數與變量套用著,加var的變量雖然那個要提升,但由于此時的變量為局部變量,只會提升到函數體的最前面。

例1.1:<script> var a;  //此時只有聲明提升到前面而變量值沒有console.log(a)  // 打印出的a的值為undefinedvar a = 120;  //這一步相當于沒操作 </script>
復制代碼
例1.2:<script> var a;  //此時只有聲明提升到前面而變量值沒有console.log(a)  // 打印出的a的值為undefinedvar a = 120;  //這一步相當于沒操作 console.log(a)  //打印出的a的值為120</script>
復制代碼
例2:<script> g()             //調用函數function g(){console.log("g....")  //此時也可以打印出來g...,因為函數整個提升到了前面}                        //聲明定義變量</script>
復制代碼
例3:<script>console.log("--------------------")  //打印出----------var a;                               //這是將局部變量提升到函數體最前面function f(){console.log(a)                  //要打印時會去尋找變量,即為undefineda = 2;}f();</script>
復制代碼

4、變量分為哪幾類?

1.局部變量
??局部變量指在函數內聲明的變量。它只能在函數內部訪問,在函數外面是不能被訪問;就好像是各個地方的方言一樣。

例子:<script>function f(){var name = "wangcai";  //局部變量,因為這個變量放在函數里面console.log(name)}console.log("----"+name) //這里因為name是局部變量,所以只會顯示----// 函數聲明完后,你要使用這個函數,那么你一定要調用這個函數f()</script>
復制代碼

2.全局變量
??全局指變量指在函數外聲明的變量。它在函數內部和外部都可以訪問;就如同標準普通話在任何地區都可以用。

例子:<script>var age = 100;  //全局變量聲明定義了agefunction f(){console.log("在函數里面訪問的全局變量"+age)  //這里為局部變量只有調用函數后才會打印出來}console.log(age)  //此為全局變量,在函數外聲明的f() // 函數調用,這里會將函數的第二行代碼執行出來</script>
復制代碼

二、函數的認識

1、啥是函數?

??函數可以說成是個功能塊,當你給它一個輸入值時,在這個功能塊中通過某種關系或者說映射,就能得到一個輸出值。就像豆漿機,將準備的大豆放到機器中,通過榨汁得到一杯豆漿。

2、如何定義函數?

方式一:函數聲明
??用關鍵字function來聲明函數,其中基本格式如下:function ?f(){ };其中有f為函數名;()是函數的特殊標志;{}叫函數體或者具體的功能

function  f(){console.log("函數聲明")
}
復制代碼

方式二:函數表達式
??函數表達式本質上是一個變量;它指的是將以function聲明的函數作為表達式放在賦值的右邊,重新定義一個變量。

var g = function  f(){console.log("函數表達式")
}
f();
復制代碼

區別:聲明函數與函數表達式兩者在提升階段不一樣;函數聲明可以將函數調用寫到函數聲明之前,而函數表達式則將函數調用提前會出錯。

函數聲明:
<script>f();function  f(){console.log("函數聲明提升")     //此時是可以打印出"函數聲明提升"}
</script>
函數表達式:
<script>f();var g = function  f(){console.log("函數表達式提升")  //會報錯,f沒有定義}
</script>
復制代碼

3、函數返回值

1.函數在沒有寫return或者只寫了return時,默認返回undefined。

(1) function  f(){//這是相當于默認的return undefined;}
(2)function  f(){return;  //同上,默認的return undefined;
}
復制代碼

2.在一個函數中,執行過return語句后,下面的語句將不再執行。

function  f(){console.log("caomeitai")return thanks;   //當執行過該語句,下面不再執行console.log("xiaoyuzhou")  //并未執行
}
復制代碼

4、函數的參數

??在函數定義與函數調用時,有兩個參數:形參與實參。形參即形式參數,代表著在定義函數時,小括號中的參數;實參即實際參數則代表在調用函數時,小括號中的參數。

function  add(x,y){    //這里小括號中的x,y為形參return  x+y;
}
console.log(add(2,3));  //在調用了add函數時的2,3為實參
復制代碼

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

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

相關文章

Win32 API消息函數:GetMessagePos

Win32 API消息函數:GetMessagePos 函數功能&#xff1a;該函數返回表示屏幕坐標下光標位置的長整數值。此位置表示當上一消息由GetMessage取得時鼠標占用的點。 函數原型&#xff1a;DWORD GetMessagePos&#xff08;VOID&#xff09; 參數&#xff1a;無。 返回值&…

都快 2022 年了,這些 Github 使用技巧你都會了嗎?

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。最近經常有小伙伴問我如…

單線程+異步協程

一 . 線程池和進程池 可以適當的使用,在大量的IO情況下有更好的方法 import time from multiprocessing.dummy import Pool def request(url):print(正在下載->,url)time.sleep(2)print(下載完畢->,url) start time.time() urls [www.baidu.com,www.taobao.com,www.sou…

Repeater\DataList\GridView實現分頁,數據編輯與刪除

一、實現效果 1、GridView 2、DataList 3、Repeater 二、代碼 1、可以去Csdn資源下載&#xff0c;包含了Norwind中文示例數據庫噢&#xff01;&#xff08;放心下&#xff0c;不要資源分&#xff09; 下載地址&#xff1a;數據控件示例源碼Norwind中文數據庫 2、我的開發環境&a…

網站快速成型_我的老板對快速成型有什么期望?

網站快速成型Some of the top excuses I have gotten from clients when inviting them into a prototyping session are: “I am not a designer!” “I can’t draw!” “I have no creative background!”在邀請客戶參加原型制作會議時&#xff0c;我從客戶那里得到的一些主…

碎片化學前端,融入到積極上進的環境,我推薦~

眾所周知&#xff0c;關注公眾號可以了解學習掌握技術方向&#xff0c;學習優質好文&#xff0c;落實到自己項目中。還可以結交圈內好友&#xff0c;讓自己融入到積極上進的技術氛圍&#xff0c;促進自己的技術提升。話不多說&#xff0c;推薦這些優質前端公眾號前端之神 80w閱…

重學JavaScript深入理解系列(六)

JavaScript深入理解—-閉包(Closures) 概要 本文將介紹一個在JavaScript經常會拿來討論的話題 —— 閉包&#xff08;closure&#xff09;。閉包其實已經是個老生常談的話題了&#xff1b; 有大量文章都介紹過閉包的內容&#xff0c;盡管如此&#xff0c;這里還是要試著從理論角…

EXT.NET復雜布局(四)——系統首頁設計(上)

很久沒有發帖了&#xff0c;很是慚愧&#xff0c;因此給各位使用EXT.NET的朋友獻上一份禮物。 本篇主要講述頁面設計與效果&#xff0c;下篇將講述編碼并提供源碼下載。 系統首頁設計往往是個難點&#xff0c;因為往往要考慮以下因素&#xff1a; 重要通知系統功能菜單快捷操作…

figma設計_在Figma中使用隔片移交設計

figma設計I was quite surprised by how much the design community resonated with the concept of spacers since I published my 自從我發表論文以來&#xff0c;設計界對間隔件的概念產生了多少共鳴&#xff0c;我感到非常驚訝。 last story. It encouraged me to think m…

axios源碼中的10多個工具函數,值得一學~

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。本文來自讀者Ethan01投稿…

安裝jenkins時出現 No such plugin: cloudbees-folder的解決辦法

今天安裝了一下jenkins&#xff0c;在初始化安裝插件時出現“ No such plugin: cloudbees-folder”錯誤&#xff0c;根據網上的教程&#xff1a; 1、打開鏈接“http://ftp.icm.edu.pl/packages/jenkins/plugins/cloudbees-folder/”&#xff0c;在最下面找到并打開“latest”目…

寄充氣娃娃怎么寄_我如何在5小時內寄出新設計作品集

寄充氣娃娃怎么寄Over the Easter break, I challenged myself to set aside an evening rethinking the structure, content and design of my portfolio in Notion with a focus on its 在復活節假期&#xff0c;我挑戰自己&#xff0c;把一個晚上放在一邊&#xff0c;重新思…

基于Hbase的用戶評分協同過濾推薦算法

基于Hbase的用戶評分協同過濾推薦算法 作者&#xff1a; 張保維 2012-1-3 一、 概述 本文為推薦引擎設計的基礎篇&#xff0c;介紹基于hbase 存儲方式用戶評分的方式進行推薦的主體算法及在分布式平臺環境下的實現。由于推薦算法分支眾多&#xff0c;我們先從簡單及實用的算法…

最全 JavaScript Array 方法 詳解

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。我們在日常開發中&#…

[譯] React Hooks: 沒有魔法,只是數組

[譯] React Hooks: 沒有魔法&#xff0c;只是數組 原文鏈接&#xff1a; medium.com/ryardley/r… 我是 React 新特性 Hooks 的粉絲。但是&#xff0c;在你使用 React Hooks的過程中&#xff0c;有一些看上去 很奇怪的限制 。在本文里&#xff0c;對于那些還在為了理解這些限制…

管理溝通中移情的應用_移情在設計中的重要性

管理溝通中移情的應用One of the most important aspects of any great design is the empathetic understanding of and connection to the user. If a design is ‘selfish’, as in when a product designed with the designer in mind and not the user, it will ultimatel…

網易前端進階特訓營,邀你免費入營!一舉解決面試晉升難題!

網易等大廠的前端崗位一直緊缺&#xff0c;特別是資深級。最近一位小哥面進網易&#xff0c;定級P4&#xff08;資深&#xff09;&#xff0c;總包60W&#xff0c;給大家帶來真實面經要點分享。網易的要求有&#xff1a;1.對性能優化有較好理解&#xff0c;熟悉常用調試工具2.熟…

Feign的構建過程及自定義擴展功能

spring-cloud-openfeign-core-2.1.1.RELEASE.jar 中 HystrixFeign 的詳細構建過程&#xff1a; EnableFeignClients -> FeignClientsRegistrar 掃描 Feign注解的類 -> FeignClientFactoryBean通過Targeter生產FeignClient -> Targeter通過Feign.Builder構建Feign ->…

angelica類似_親愛的當歸(Angelica)是第一個讓我哭泣的VR體驗

angelica類似It was a night just like any other night. I finished work for the day and closed my laptop. I had dinner and after an hour, I put on my Oculus Quest headset in order to begin my VR workout.就像其他任何夜晚一樣&#xff0c; 這 是一個夜晚。 我完成…

面試官:請手寫一個帶取消功能的延遲函數,axios 取消功能的原理是什么

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。本文倉庫 https://githu…