const与let声明

104 阅读1分钟
    tool.js文件
    
const formatDate = (dateTime) => {
    const date = new Date(dateTime) // 转换成Data();
    const y = date.getFullYear()
    const m = date.getMonth() + 1
    m = m < 10 ? '0' + m : m
    const d = date.getDate()
    d = d < 10 ? ('0' + d) : d
    return [y,m,d].join('-')
  }

  module.exports={formatDate}
     test.js文件
     
    const  test = require('./tool')

    console.log(test);
    let res = test.formatDate(Date.now())
    console.log(res);
在文件引入时,会产生如下错误

常量使用错误.jpg

终端打印可以发现,第一次打印已经拿到了tool.js模块,但是第二次打印却直接报错,说明模块中的代码无法调用.
第一步检查调用方法是否正确,可知test中方法调用没有问题,则可得到是模块中哪个部位出了错误;
第二部检查tool模块运行代码是否正确,表达式,返回值都没有问题,module.exports是固定格式同样没有问题.
此时就需要思考是否是自己平常的习惯造成的错误,检查声明:已知const是用来声明常量的,常量特点是不能修改值,
而m = m < 10 ? '0' + m : m 是三元表达式并且重新将结果赋值给 m , m 的值此时可由判断结果变更已经属于变量.
然而变量声明可以用来声明常量,常量声明不能用来声明变量,此时问题就已经找到答案了,
只需将   const m = date.getMonth() + 1const d = date.getDate()更改为
         let m = date.getMonth() + 1        let d = date.getDate()即可解决
完整写法变成下面这样
const formatDate = (dateTime) => {
    const date = new Date(dateTime) // 转换成Data();
    const y = date.getFullYear()
    let m = date.getMonth() + 1
    m = m < 10 ? '0' + m : m
    let d = date.getDate()
    d = d < 10 ? ('0' + d) : d
    return [y,m,d].join('-')
  }

常量与变量.jpg

此时已经正确打印出来结果
其实,也可以通过终端直接查看具体错误,如图

122.jpg

有一个朝上的角标,以及上一行提示的tool.js文件中第五行无法读取,检查三元表达式无误就可以直接定位了上一行了.
正因为bug总是出现在不起眼的角落,才越发显得难以处理,而真正的大问题其实都是一个个小问题的积累.
希望自己每一步都迈得坚实,不求快但求稳.