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
<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>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。