js 函数声明和函数表达式的执行结果

这篇具有很好参考价值的文章主要介绍了js 函数声明和函数表达式的执行结果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

// var 定义的变量会进行变量提升,声明被拿到函数或全局作用域的顶端,并输出 undefined
// 函数声明也会进行提升,var 的变量提升会覆盖函数声明提升
console.log("=====0======")
var fn = function () {
  console.log("fn0-1")
}
fn()

var fn = function () {
  console.log("fn0-2")
}
fn()


function fn() {
  console.log("fn0-3")
}
fn()

function fn() {
  console.log("fn0-4")
}
fn()
// fn0-1
// fn0-2
// fn0-2
// fn0-2
console.log("=====1======")

try {
  fn1()
} catch (error) {
  console.log(error)
}
var fn1 = function () {
  console.log("fn1-1")
}
// Uncaught TypeError: fn1 is not a function

console.log("====2=======")
// 函数声明会提升,可以直接在函数定义之前执行函数,后面定义的函数声明会覆盖前面的函数声明
function fn2() {
  console.log("fn2-1")
}
fn2()

function fn2() {
  console.log("fn2-2")
}
fn2()
// fn2-2
// fn2-2

console.log("=====3======")
fn3()   // 函数声明提升,走最后一个函数声明的结果
var fn3 = function () {
    console.log("fn3-1")
}

function fn3() {
  console.log("fn3-2")
}
fn3()  // var 声明提升覆盖函数声明提升

function fn3() {
  console.log("fn3-3")
}
fn3() //  var 声明提升覆盖函数声明提升
// fn3-3
// fn3-1
// fn3-1

console.log("=====5======")
var fn5 = function () {
  console.log("fn5-1")
}
fn5()

var fn5 = function () {
  console.log("fn5-2")
}
fn5()
// fn5-1
// fn5-2
// 总结:函数表达式相对于函数声明的一个重要区别是函数声明在代码解析阶段就会被提升(函数声明提升),而函数表达式则需要在赋值语句执行到达时才会创建函数对象

参考:https://juejin.cn/post/7237051958993469496

推荐:看 《你不知道的 JavaScript》,里面有详细的 js 执行细节,看完很有收获。文章来源地址https://www.toymoban.com/news/detail-474482.html

到了这里,关于js 函数声明和函数表达式的执行结果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Excel中如何用计算公式或表达式直接计算出结果?

    目录 Excel中如何用计算公式或表达式直接计算出结果? 1、例如:我们需要用E列的计算公式(表达式),直接计算出结果填至F列 2、另一种方法:在菜单栏中点击【公式】再点击【定义名称】自动弹出对话框, ​3、修改【名称】可以随意填汉字或者英文字母G;【引用位置】改

    2024年02月14日
    浏览(30)
  • Java算法题 给一个字符串表达式,实现一个基本计算器,返回计算结果

    题目: 考点:栈 解题思路: 使用 2 个栈,一个 stack_nums 用来保存计算过程的操作数,一个 stack_symbol 用来保存运算符。 在HashMap中,指定加减优先级为1,乘除优先级为2 循环遍历字符串s, 操作符入栈: 若当前字符为\\\'+\\\', \\\'-\\\', \\\'*\\\', \\\'/\\\', \\\'(\\\' 时,压入运算符栈 stack_symbol, 操作数入

    2024年02月07日
    浏览(36)
  • 表达式树(Expression)的执行、解释与创建

    前言:在这里不进行概念性描述,能看到这篇文章说明你已经知道如何使用表达式树 这里需要说明下表达式树是表示代码的数据结构,并不是经过编译且可执行的代码,如果想要执行由表达式树表示的 .NET 代码,必须将其转换为可执行的 IL 指令。这时候我们需要调用编译函

    2024年02月22日
    浏览(26)
  • js 正则表达式

    不允许汉字  state.rulesForm.username = value.replace(/[u4e00-u9fa5]/gi, \\\"\\\"); 只允许数字和字母 state.rulesForm.username = value.replace(/[^a-zA-Z0-9]+/g, \\\"\\\"); 只允许数字 state.rulesForm.qlmId = value.replace(/[^0-9]/g, \\\"\\\"); 只允许数字和字母和符号 this.form.username = this.form.username.replace(/[^a-zA-Z0-9@#$%^*()._+=?-,]+/g,

    2024年02月08日
    浏览(39)
  • JS -- 正则表达式教程

    ECMAScript 通过 RegExp 类型支持正则表达式。 上面两种是等价的正则表达式 g: 执行全局匹配(查找所有匹配,而非在找到第一个匹配后停止) i: 忽略大小写 m: 多行匹配(第一行末尾结束后会在下一行连续匹配) 测试字符是否满足正则表达式规则,返回 true / false 找到满足正则

    2024年01月17日
    浏览(36)
  • js---三元表达式详解

    三元表达式是JS中最为常用的快捷判断语句之一。其语法形式为: 当判断条件成立时,返回结果1,否则返回结果2。这是JS中最为基本的三元表达式形式。 在实际应用中,三元表达式可用于快速判断三个条件,如下所示示例代码: 以上代码的意思是:当成绩大于90分时,返回

    2024年02月03日
    浏览(47)
  • js之正则表达式

    正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript 中,正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法,以及 String 的 match、matchAll、replace、search 和 split 方法。 灵活性、逻辑性和功能性非常的强。 可以迅速地用极简单的方式达到字符串的

    2024年02月09日
    浏览(34)
  • 使用python 解析Linux cron表达式,输出执行日期

    该方法通过输入linux 的cron 表达式,可以按要求输出调度的时间,方便与实际调度进行校对。

    2024年02月11日
    浏览(33)
  • java中cron表达式 每10分钟执行一次

    在Java中,可以使用Quartz框架来定义和调度任务,包括使用Cron表达式来定义任务的执行时间。下面是一个使用Quartz框架实现每10分钟执行一次任务的示例: 添加Quartz依赖 在Maven项目中,添加以下依赖到pom.xml文件中: xml dependency     groupIdorg.quartz-scheduler/groupId     artifactIdquar

    2024年02月13日
    浏览(35)
  • JS中的正则表达式

    正则就是一种规则的的表达式,书写一段规则,用于匹配一段字符串是否符合规则 创建正则表达式 创建正则表达式有两种方式: 1.字面量的形式 2.内置构造函数的形式 1.匹配(test) 匹配字符串是否符合正则规则 符合—true 不符合—false 语法: 正则.test(字符串) 2.捕获 语法:正则.exe

    2024年02月05日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包