TomKing9 2022-03-20 21:42 采纳率: 77.8%
浏览 100
已结题

js的if会形成作用域吗?

问题遇到的现象和发生背景

为什么if(){return}里面return了以后,后面的代码也不会执行了呢?
是因为if 没有形成作用域吗?所以在里面return 其实和在外面return是一个结果

问题相关代码,请勿粘贴截图
fs.readFile('./成绩.txt',(err,data) => {
  if (err) {
    console.log(err.message)
    return
  } else {

    //console.log('数据:'+ data);
    // 到这里读取文件成功,往下是处理数据
    
    // 4.1 先把处理的数据, 按照空格进行分割成数组
    const arr = data.toString().split(' ')
    
    // 4.2 循环分割后的数组,对每一项数据,进行字符串的替换操作
    const newArr = []
    for (let i = 0;i < arr.length; i++) {
      newArr[i] = arr[i].replace('=',': ')
    }
    // 4.3 把新数组中的每一项,进行合并,得到一个新的字符串
    const newData = newArr.join('\n')
    fs.writeFile('./成绩-ok.txt',newData,(err) => {
      if (err) {
        console.log('写入失败'+err.message)
      } else {
        console.log('写入成功!');
      }
    })
  }
})

这样我能理解,下面这个我就理解不了了

fs.readFile('./成绩1.txt',(err,data) => {
  if (err) {
    console.log(err.message)
    return
  }

  //console.log('数据:'+ data);
  // 到这里读取文件成功,往下是处理数据
  
  // 4.1 先把处理的数据, 按照空格进行分割成数组
  const arr = data.toString().split(' ')
  
  // 4.2 循环分割后的数组,对每一项数据,进行字符串的替换操作
  const newArr = []
  for (let i = 0;i < arr.length; i++) {
    newArr[i] = arr[i].replace('=',': ')
  }
  // 4.3 把新数组中的每一项,进行合并,得到一个新的字符串
  const newData = newArr.join('\n')
  fs.writeFile('./成绩-ok.txt',newData,(err) => {
    if (err) {
      console.log('写入失败'+err.message)
    } else {
      console.log('写入成功!');
    }
  })
})
  • 写回答

4条回答 默认 最新

  • iloveozz 2022-03-20 22:06
    关注

    我没看上面出来两个差别,就一句话,只要运行到return,这个函数就结束了,其实你的代码等于

    
    fs.readFile('./成绩1.txt',(err,data) => {
      if (err) {
        console.log(err.message)
        return
      }
     
      //console.log('数据:'+ data);
      // 到这里读取文件成功,往下是处理数据
      
      // 4.1 先把处理的数据, 按照空格进行分割成数组
      const arr = data.toString().split(' ')
      
      // 4.2 循环分割后的数组,对每一项数据,进行字符串的替换操作
      const newArr = []
      for (let i = 0;i < arr.length; i++) {
        newArr[i] = arr[i].replace('=',': ')
      }
      // 4.3 把新数组中的每一项,进行合并,得到一个新的字符串
      const newData = newArr.join('\n')
      fs.writeFile('./成绩-ok.txt',newData,(err) => {
        if (err) {
          console.log('写入失败'+err.message)
        } else {
          console.log('写入成功!');
        }
      })
    
    return;//只不过你没有返回值,就不用写了,编译器替我们做了很多事情的
    })
    

    有用的话采纳一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 已采纳回答 5月11日
  • 创建了问题 3月20日

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题