开发者社区> 问答> 正文

ES6中let报错,这是个大坑,大家怎么看待??报错

   if(this.data.shebaostatus && this.data.fundstatus){
        let jiaofeitotal = parseFloat(parseFloat(shebaototal)+parseFloat(fundtotal)).toFixed(2);
      jiaofeitotal = jiaofeitotal*100;
      }
      if(this.data.shebaostatus && !this.data.fundstatus){
        let jiaofeitotal = parseFloat(parseFloat(shebaototal)).toFixed(2);
      jiaofeitotal = jiaofeitotal*100;
      }
      if(!this.data.shebaostatus && this.data.fundstatus){
        let jiaofeitotal = parseFloat(parseFloat(fundtotal)).toFixed(2);
      jiaofeitotal = jiaofeitotal*100;
      }
      if(!this.data.shebaostatus && !this.data.fundstatus){
        let jiaofeitotal = 0;
      }
console.log(jiaofeitotal)

let报错,提示未被定义,

如果换成var,则没有任何问题,

真是个大坑,建议大家继续使用var

展开
收起
爱吃鱼的程序员 2020-06-05 14:34:28 836 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>ECMAScript 6.0 (ES6) 是javascript语言的新一代标准,正式发布于2015年6月。其中,let命令:用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。<br> <strong>用 js ES6 运行楼主的代码,解释如下:</strong><br> 就这四个独立的逻辑判断表达式 之后的花括号内的 let 命令而言, 它分别四次 设置/声明 了 仅在每个给定的花括号内有效的变量 jiaofeitotal。在花括号之外使用 这个没有声明的变量 jiaofeitotal,定会报错。 <br> <strong>代码修改意见:</strong><br> 首先, 即在 四个独立的逻辑判断之前, 声明 变量  let jiaofeitotal=-1;<br> 然后依次去掉 四个独立的逻辑判断表达式 之后的花括号内的 let 命令, </p>
                    
    
                        <p>let有作用域吧= =</p>
                    
    
                        <p>let只能在你的大括号内声明变量的作用域使用,var在ES5时代正是因为有作用域污染才在ES6中更新了let声明变量</p>
                    
    
                        <p>你这个完全属于作茧自缚啊。1,在作用域外引用变量,大漏洞;2,逻辑判断之间没有严格的关联和默认赋值操作,出错跟let一点关系都没有,如果有,也只能说是滥用吧。</p> 
    

     

                        自己理解、使用错误,不要怪let -_-||
                    
    
                        <p>第一次看到把基本语法常识无视,说得理直气壮。</p>
                    
    
                        <p>从题主的问题可以看出来,他没学过JavaScript以外的任何一门语言,不然不会连这最基本的变量作用域的问题都搞不清楚</p>
                    
    
                        <p>let的产生正是因为var没有作用域而被ES6提供的新命令,建议使用let带作用域的定义方式,如果使用var就需要闭包解决作用域问题反倒麻烦,好好把基础再巩固下。</p>
                    
    
                        <p>本来想喷两句想想还是算了,喷了你也不懂,你把 <span>let</span> 放到if外面初始化试试</p>
                    
    
                        <p>你在{  } 里面LET ,那么有效区域就只有在这个{}里面</p>
    
    2020-06-05 14:34:43
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
Gululu重新定义儿童饮水习惯 立即下载
Python第五讲——关于爬虫如何做js逆向的思路 立即下载