当前位置: 首页 > news >正文

vue3页面空白-普通函数和箭头函数提升的不同

在 JavaScript 中,普通函数(即使用 function 关键字定义的函数)和箭头函数(使用 () 和 => 定义的函数)在作用域和提升(hoisting)行为上有不同的表现。


1. 普通函数(Function Declarations) 普通函数声明会被提升(hoisted),也就是说,它们可以在声明之前被调用。这是因为函数声明会被提升到当前作用域的顶部。例如:

console.log(foo()); // 输出 "Hello"function foo() {return "Hello";
}

在这个例子中,尽管 foo 函数是在调用之后才声明的,但它仍然可以正常工作,因为函数声明会被提升。



2. 箭头函数和其他函数表达式 箭头函数和其他函数表达式(如使用 var, let, const 定义的函数)不会被提升。这意味着它们必须在声明之后才能被调用。例如:

console.log(bar()); // 报错:TypeError: bar is not a functionconst bar = () => {return "World";
};

在这个例子中,如果尝试在 bar 函数声明之前调用它,会导致错误,因为 bar 在声明之前只是一个未定义的标识符。




错例


watchEffect(() => {if(calculateWinner(squareValues.value)){status.value = 'Winner: ' + calculateWinner(squareValues.value) + ' ! ';}else if(!squareValues.value.filter(item => item === '').length){status.value = 'Draw !';}else{status.value = 'Next player is ' + (xIsNext.value ? 'X' : 'O');}
});const calculateWinner = (squares) => {const lines = [[0, 1, 2],[3, 4, 5],[6, 7, 8],[0, 3, 6],[1, 4, 7],[2, 5, 8],[0, 4, 8],[2, 4, 6]];for(let i = 0; i < lines.length; i++) {const [a, b, c] = lines[i];if(squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {return squares[a];}}return null;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 探索Python世界的趣味之旅:自制贪吃蛇游戏
  • 【Python123题库】#大学排行榜分析 #数据统计 #罗马数字转换
  • 【leetcode详解】一个小组的最大实力值【中等】
  • 如何用RoBERTa高效提取事件文本结构特征:多层次上下文建模与特征融合
  • Spring全局异常处理HandlerExceptionResolver使用
  • lambda c++/java/kotlin
  • 鸿蒙(API 12 Beta6版)图形【使用Text模块实现文本显示】方舟2D图形服务
  • 【运维监控】influxdb 2.0+telegraf 监控tomcat 8.5运行情况(1)
  • 「Python」assert 断言使用方法
  • 滚雪球学MyBatis-Plus(09):乐观锁与性能优化
  • 【js逆向专题】2.浏览器调试技巧
  • 网吧业务安全对抗(有源码)
  • vant UI之van-tab如何实现标题两行显示
  • vue3 前端实现pdf打印预览 printjs
  • spring boot(学习笔记第十九课)
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • centos安装java运行环境jdk+tomcat
  • echarts花样作死的坑
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript类型识别
  • js
  • mongodb--安装和初步使用教程
  • ng6--错误信息小结(持续更新)
  • Selenium实战教程系列(二)---元素定位
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • XForms - 更强大的Form
  • zookeeper系列(七)实战分布式命名服务
  • 包装类对象
  • 反思总结然后整装待发
  • 基于HAProxy的高性能缓存服务器nuster
  • 聊聊hikari连接池的leakDetectionThreshold
  • 详解NodeJs流之一
  • 在weex里面使用chart图表
  • ionic入门之数据绑定显示-1
  • 阿里云ACE认证学习知识点梳理
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ###项目技术发展史
  • #13 yum、编译安装与sed命令的使用
  • #pragam once 和 #ifndef 预编译头
  • #Spring-boot高级
  • $ git push -u origin master 推送到远程库出错
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (2)STM32单片机上位机
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C语言)二分查找 超详细
  • (ros//EnvironmentVariables)ros环境变量
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (三)SvelteKit教程:layout 文件
  • (十三)MipMap
  • (四)图像的%2线性拉伸
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • ***检测工具之RKHunter AIDE
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Project Open Day(2011.11.13)