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

狄工 发布于 01/28 22:39
阅读 554
收藏 0
   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

加载中
0
tcxu
tcxu

ECMAScript 6.0 (ES6) 是javascript语言的新一代标准,正式发布于2015年6月。环球彩票_[开户赠金]其中,let命令:用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
用 js ES6 运行楼主的代码,解释如下:
就这四个独立的逻辑判断表达式 之后的花括号内的 let 命令而言, 它分别四次 设置/声明 了 仅在每个给定的花括号内有效的变量 jiaofeitotal。在花括号之外使用 这个没有声明的变量 jiaofeitotal,定会报错。 
代码修改意见:
首先, 即在 四个独立的逻辑判断之前, 声明 变量  let jiaofeitotal=-1;
然后依次去掉 四个独立的逻辑判断表达式 之后的花括号内的 let 命令, 

0
小能犭苗

let有作用域吧= =

0
W
WindSpeed

let只能在你的大括号内声明变量的作用域使用,var在ES5时代正是因为有作用域污染才在ES6中更新了let声明变量

0
火眼金睛容嬷嬷
火眼金睛容嬷嬷

你这个完全属于作茧自缚啊。环球彩票_[开户赠金]1,在作用域外引用变量,大漏洞;2,逻辑判断之间没有严格的关联和默认赋值操作,出错跟let一点关系都没有,如果有,也只能说是滥用吧。

 

0
木有龙井茶
木有龙井茶
自己理解、使用错误,不要怪let -_-||
0
f
freezingsky

第一次看到把基本语法常识无视,说得理直气壮。

0
你们都是技术宅
你们都是技术宅

从题主的问题可以看出来,他没学过JavaScript以外的任何一门语言,不然不会连这最基本的变量作用域的问题都搞不清楚

0
二零一九是猪年
二零一九是猪年

环球彩票_[开户赠金]let的产生正是因为var没有作用域而被ES6提供的新命令,建议使用let带作用域的定义方式,如果使用var就需要闭包解决作用域问题反倒麻烦,好好把基础再巩固下。

0
喜欢自在
喜欢自在

本来想喷两句想想还是算了,喷了你也不懂,你把 let 放到if外面初始化试试

0
LionXmX
LionXmX

你在{  } 里面LET ,那么有效区域就只有在这个{}里面

返回顶部
顶部

页面底部区域 foot.htm