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

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 软件定义网络mininet和onos控制器问题
  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。