千家信息网

JavaScript中你不知道的函数有哪些

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,本篇文章给大家分享的是有关JavaScript中你不知道的函数有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。函数声明在JavaSc
千家信息网最后更新 2025年11月16日JavaScript中你不知道的函数有哪些

本篇文章给大家分享的是有关JavaScript中你不知道的函数有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

函数声明

在JavaScript中,对于函数的声明有两种表达形式, 声明式 和 表达式 ,至于其他函数(如立即执行函数,箭头函数等)都是基于这两种形式衍生的。

// 声明式 function foo () {   console.log('我是声明式') }  // 表达式 var foo = function () {   console.log('我是表达式') }

具名函数

故名思意,具名函数就是有名称的函数,这是我们最常见的一种函数,我们先来看看它的写法。

// 具名函数 function foo () {   console.log('我是具名函数') }

上边说了,函数声明的表达形式有两种,具名函数是经典的声明式,具名函数表达式的另外一种表现形式引出了另外一种函数类型- 具名函数表达式(NFE) 。

具名函数表达式

具名函数表达式就是具名函数的表达式写法,严格来说,它并不是一种函数类型,只是一种写法而已。

// 具名函数表达式 var fn = function foo () {   console.log('我是具名函数表达式'); } fn() // 输出:我是具名函数表达式

它有几个特点:

  • 函数名标识符私有化

  • 函数名标识符常量化

函数名标识符私有化:即具名函数表达式的函数名不能从外部调用,仅供函数体内部使用,当外部调用时就会报错。

// 函数名称私有化 var fn = function foo () {   console.log(typeof foo); } fn() // function foo() // Uncaught ReferenceError: foo is not defined

函数名标识符常量化:即具名函数表达式标识符的值不能修改,我们可以将其当作常量来使用。

var fn = function foo(){     foo = 12;     console.log(foo); }  fn() /* 输出: ƒ foo(){     foo = 12;     console.log(foo); } */

我们来看一道经典的面试题

// 改写以下代码,使其分别输出10、12 var foo = 10; (function foo   (){     foo = 12;     console.log(foo); })()  // 改写结果 var foo = 10; (function foo   (){     var foo = 12;   console.log(window.foo); // 10   console.log(foo); // 12 })()

匿名函数

匿名函数:即没有名称的函数,匿名函数不能像具名函数一样直接声明定义,在JavaScript中常见的用法就是将匿名函数当作回调参数使用或作为高阶函数的返回值。

// 作为回调参数 setTimeout(function () {   console.log('我是匿名函数'); }, 1000);  // 作为高阶函数的返回值 function foo () {   var num = 10;   return function (i) {     return num + i;   } }  foo()(5) // 输出:15

匿名函数有几个缺点我们需要注意一下:

  • 没有函数名,调试困难

  • 如需引用自身(如递归函数),需要用 arguments.callee ,但是 arguments.callee 在严格模式下禁用

  • 可读性差

立即执行函数

立即执行函数(IIFE):即当程序解析到该函数时就立即执行。

// 写法一 (function () {   console.log('我是立即执行函数'); })()  // 写法二 (function () {   console.log('我是立即执行函数'); }())

匿名函数的优点在于内部参数不会泄露,即变量私有化。

(function () {   var x = 10   console.log('我是立即执行函数'); }())  console.log(x); // Uncaught ReferenceError: x is not defined

有一道很经典的面试题,我们可以看一下。

// 改写以下代码,让其依次输出. for (var i = 0; i < 5; i++) {     setTimeout(function () {         console.log(`值为${i}`)     }, 0) } // 此时会输出5次 "值为5"

我们会立马想到用 let ,但是还有没有其他写法呢?当然有,立即执行函数就是了。

// 改写方法一 for (var i = 0; i < 5; i++) {   (function(num){     console.log(`值为${num}`)   })(i) }  // 改写方法二 for (var i = 0; i < 5; i++) {   var num = (function(){     return i;   })()   console.log(`值为${num}`) }

以上就是JavaScript中你不知道的函数有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

函数 表达式 写法 输出 就是 标识 标识符 形式 私有 参数 名称 经典 一道 代码 常见 方法 更多 知识 篇文章 类型 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 模拟人生4保存数据库找不到 电竞酒店服务器租用 互联网科技狗 反向代理后无法连接数据库 长寿区谢友晨网络技术工作室 贵池区常规软件开发服务检修 软件开发 货物税 南方电网软件开发工资 易速网络安全科技馆 中国移动网络安全检查报告 白帽子说网络安全 中国移动广西分公司服务器 element表单与数据库 彩票过滤软件开发需要什么资质 lol服务器攻击 百度网络安全验证什么东西 同济大学软件开发苏州公司 韩服永恒之塔捏人数据库 数据库连接后分开 外文数据库信息检索 系统维护后无法连接服务器 数据库是系统还是软件开发 永劫无间游戏服务器ip 平谷区品质网络技术售后保障 软件开发前台需要学什么 江西审批管控软件开发平台 华为软件开发招哪种专业 数据库课设登录界面 使命召唤战区亚洲区服务器在哪里 软件开发工资一般多少有无年终奖
0