中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在JavaScript中使用匿名函數

發布時間:2021-01-04 15:06:50 來源:億速云 閱讀:183 作者:Leah 欄目:web開發

怎么在JavaScript中使用匿名函數?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

一般函數:

function show1(name){
    alert(name); //打印:zhangsan
  }
show1("zhangsan");

匿名函數:

var show2 = function (name) {
    alert(name); //打印:張三
  }
show2("張三");

上面2種定義函數的區別:

1.我們知道所有的function都會在window對象里

  function show1(name){
    alert(name); //打印:張三
  }
  window.show1("張三");

即使在函數定義之前調用

  window.show1("張三");
  function show1(name){
    alert(name); //打印:張三
  }

這是因為這種”有名字”的函數在JS引擎初始化的時候就加載到作用域里面

2.如果是匿名函數

  window.show2("李四");
  var show2 = function (name) {
    alert(name); //打印:李四
  }

控制臺會打印:TypeError: window.show2 is not a function

二、如果我們需要合并上面2個函數

<script>
  function show(name) {
    return function () {
      alert(name); //內部函數是可以調用外層的變量的
    }
  }
  show("王五");
</script>

猜猜會打印什么?什么也沒有,也不會報錯。這是因為執行show()只是返回了一個函數本身,并沒有執行這個函數。

show("王五")();

這樣執行,就打印:王五

如果里面的函數也要傳入變量

<script>
  function show(name) {
    return function (age) {
      alert(name); //打印:王五
      alert(age); //打印:18
    }
  }
  show("王五")(18);
</script>
<script>
  function show(name) {
    return function (name) {
      alert(name);
    }
  }
  show("王五")(18);
</script>

猜猜是打印“王五”還是“18”?只會打印“18”。

三、匿名函數的自執行

<script>
  (function (name) {
    alert(name);  //打印:哈哈
  })("哈哈")
</script>

以上是推薦的寫法。

其他寫法:

  -function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")
  +function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")
  !function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")
  [function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")]
  new function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")
  ~function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")
  void function (name) {
    alert(name);  //打印:哈哈
  }("哈哈")

看完上述內容,你們掌握怎么在JavaScript中使用匿名函數的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泰安市| 炉霍县| 金塔县| 宜阳县| 红原县| 溆浦县| 富锦市| 邳州市| 江华| 洪雅县| 修水县| 博野县| 深圳市| 佛教| 江陵县| 潞城市| 奉新县| 澄城县| 二连浩特市| 出国| 济南市| 宝丰县| 普定县| 绥江县| 湟中县| 马鞍山市| 长兴县| 桐乡市| 安国市| 保定市| 白水县| 墨玉县| 广安市| 莱州市| 家居| 长寿区| 吴江市| 治多县| 营山县| 河西区| 开封市|