成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Javascript中的函數(shù)聲明和函數(shù)表達(dá)式

開(kāi)發(fā) 前端
JavaScript是一種基于對(duì)象和事件驅(qū)動(dòng)并具有相對(duì)安全性的客戶端腳本語(yǔ)言。本文主要介紹的是javascript中的函數(shù)聲明和函數(shù)表達(dá)式,希望對(duì)你有幫助,一起來(lái)看。

Javascript是一種由Netscape的LiveScript發(fā)展而來(lái)的原型化繼承的面向?qū)ο蟮膭?dòng)態(tài)類型的區(qū)分大小寫(xiě)的客戶端腳本語(yǔ)言,主要目的是為了解決服務(wù)器端語(yǔ)言,比如Perl,遺留的速度問(wèn)題,為客戶提供更流暢的瀏覽效果。

Javascript有很多有趣的用法,在Google Code Search里能找到不少,舉一個(gè)例子:

  1. <script>  
  2. ~function() {  
  3. alert("hello, world.");  
  4. }();  
  5. </script> 

試一下就知道這段代碼的意思就是聲明一個(gè)函數(shù),然后立刻執(zhí)行,因?yàn)镴avascript中的變量作用域是基于函數(shù)的,所以這樣可以避免變量污染,但這里的位運(yùn)算符“~”乍一看讓人摸不到頭腦,如果去掉它再運(yùn)行則會(huì)報(bào)錯(cuò):SyntaxError。

在闡述為什么之前,讓我們先來(lái)明確Javascript中的兩個(gè)概念:函數(shù)聲明和函數(shù)表達(dá)式:

先來(lái)看看什么樣的是函數(shù)聲明:

 

  1. <script>  
  2. function()   
  3. {  
  4. alert("hello, world.");  
  5. };  
  6. function foo()   
  7. {  
  8. alert("hello, world.");  
  9. };  
  10. </script> 

再來(lái)看看什么樣的是函數(shù)表達(dá)式:

  1. <script>  
  2. var foo = function()   
  3. {  
  4. alert("hello, world.");  
  5. };  
  6. </script> 

現(xiàn)在回頭看看文章開(kāi)頭的問(wèn)題,為什么去掉位操作符“~”后運(yùn)行會(huì)報(bào)錯(cuò),這是因?yàn)閺恼Z(yǔ)法解析的角度看,Javascript不允許在函數(shù)聲明的后面直接使用小括號(hào),而函數(shù)表達(dá)式則沒(méi)有這個(gè)限制,通過(guò)在函數(shù)聲明前面加上一個(gè)“~”操作符,就可以讓語(yǔ)法解析器把后面看成是函數(shù)表達(dá)式,同樣的,在函數(shù)聲明前面加上“!,+,-”等操作符也是可行的。

那我們?yōu)槭裁床皇褂孟旅孢@種函數(shù)表達(dá)式的方式呢?

  1. <script>  
  2. var foo = function()   
  3. {  
  4. alert("hello, world.");  
  5. }();  
  6. </script> 

雖然從語(yǔ)法解析的角度看沒(méi)有問(wèn)題,但是上面的代碼存在弊端,它引入了一個(gè)變量,可能會(huì)污染現(xiàn)有的運(yùn)行環(huán)境,帶來(lái)潛在的問(wèn)題。

使用位操作符“~”的方法多少顯得有點(diǎn)奇技淫巧,其實(shí)把函數(shù)聲明用小括號(hào)套起來(lái)更易讀:

  1. <script>  
  2. (function()   
  3. {  
  4. alert("hello, world.");  
  5. })();  
  6. </script> 

弄明白了原理,不管遇到什么寫(xiě)法,都不會(huì)再丈二和尚摸不著頭腦了。

【編輯推薦】

  1. Web移動(dòng)應(yīng)用 HTML5 CSS和JavaScript
  2. JavaScript開(kāi)發(fā)規(guī)范要求
  3. Javascript中閉包的作用域鏈
  4. JavaScript實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)下拉框
  5. 讓瀏覽器非阻塞加載javascript的幾種方式
責(zé)任編輯:于鐵 來(lái)源: 火丁筆記
相關(guān)推薦

2017-08-01 00:19:15

Javascript函數(shù)函數(shù)聲明

2021-06-28 08:01:57

JS 函數(shù)表達(dá)式函數(shù)聲明

2025-03-12 08:45:15

函數(shù)聲明函數(shù)表達(dá)式IIFE

2010-09-10 15:20:11

SQL函數(shù)計(jì)算表達(dá)式

2010-11-16 14:53:02

Oracle游標(biāo)表達(dá)式

2023-11-02 18:45:00

Rust編程表達(dá)式

2011-05-11 17:40:30

PHP正則表達(dá)式

2020-10-16 06:40:25

C++匿名函數(shù)

2009-08-31 17:11:37

Lambda表達(dá)式

2012-04-28 15:22:46

PHP

2021-08-31 07:19:41

Lambda表達(dá)式C#

2009-08-10 10:06:10

.NET Lambda

2009-07-21 14:03:00

Scalaif表達(dá)式while循環(huán)

2024-12-02 10:56:29

2009-09-16 09:58:53

PHP正則表達(dá)式函數(shù)

2009-10-12 10:11:08

Lambda表達(dá)式編寫(xiě)

2009-09-16 10:43:22

PHP正則表達(dá)式函數(shù)

2024-03-25 13:46:12

C#Lambda編程

2010-10-08 09:17:07

JavaScript表JavaScript運(yùn)

2022-05-26 08:53:47

Go函數(shù)代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久色视频在线观看 | 中日韩毛片 | 国产精品久久精品 | 国产一级特黄真人毛片 | 日韩成人免费av | 欧美激情国产日韩精品一区18 | 日日射夜夜骑 | 中文字幕精品一区 | 精国产品一区二区三区 | 午夜在线小视频 | 日本精品视频在线观看 | 成人 在线 | 91一区二区 | 五月婷婷在线视频 | 色婷婷九月 | 先锋影音资源网站 | 高清成人免费视频 | 欧美福利网站 | 亚洲成人精品在线 | 亚洲成人精品久久 | 视频一区二区三区中文字幕 | 亚洲免费视频网址 | 日本精品在线观看 | 成人欧美一区二区三区黑人孕妇 | 中文字幕视频在线 | 亚洲成在线观看 | 一级片免费在线观看 | 玖玖操 | 亚洲自拍偷拍免费视频 | 天天色图 | 日日操夜夜操视频 | 午夜资源| 国产高清在线精品一区二区三区 | 欧美一区二区三区免费在线观看 | 欧美一级做性受免费大片免费 | 亚洲国产精品va在线看黑人 | 成人福利在线视频 | 国产精品免费一区二区三区四区 | 欧美黄色片 | 天天色天天射天天干 | 亚洲综合视频 |