var let const(原创,精简)

语法方面需要注意:

1.区分大小写
2.每句后面加分号在某些情况下会提升性能(解析器会在合适的地方自动补分号来尝试修改错误)
3.if的{}如果只有一句可以省略 单并不美观

变量

var需要注意的

1.如果没有初始化会自动保存一个undefined
2.将一个数字类型赋值成对象这样是不推荐但是有效的
3.var是再一个函数中生效(函数退出失效)(函数外无效)
4.函数内直接声明类似于直接声明一个全局变量
5.一条语句同时定义多个变量中间用逗号隔开

var a =1,b = 2, c = 3

6.var 存在变量提升

console.log(age);
age = 18;
//等同于
var age ;
console.log(age);
age = 18;
let 需要注意的

1.let的范围是块级作用域(只要在大括号内就归我管,不在的是外面的事情)

        let a = 1;
        {
            let a = 2
            console.log(a); //1
        }
        console.log(a);//2

2.let在同一块内对一个变量只允许声明一次(不同{}内不管)(var声明同一个也不行)
3.暂时性死区(let声明不会变量提升但是会有一个空闲的区域,称为暂时性死区)
4.let声明的变量不会成为windows对象而var会
5.for循环中的let因为在不同的块中 所以会打印出不同的值 而var则是在退出循环中保留同一个值 会打印相同的

for(var i = 0; i<5 ;i++){
            console.log(i);
        }//01234
        for(let i = 0; i<5 ;i++){
            console.log(i);
        }//01234
        for(var i = 0; i<5 ;i++){
            setTimeout(() => {
                console.log(i);
            }, 0);
        }//55555
        for(let i = 0; i<5 ;i++){
            setTimeout(() => {
                console.log(i);
            }, 0);
        }//01234

前两个因为是同步操作所以不会影响 只有当异步时候会放入队列然后再打印所以var打印的是最后那个5 而let打印了所有应该保存的值(一切都是因为块级作用域)
6.let’声明的不会溢出(for中用let会不会泄露到外面)

const需要注意的

1.基本同let,但是不可修改
2.不可修改指向整个对象,改动其中的值是可以的

const a ={};
a.name='张三';
a.name = '李四'
console.log(a)//李四
最佳实践

少用var多用let最好多用const

// 日期格式化函数(YYYY-MM-DD HH:mm:ss) const formatDate = (date) => { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0'); return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; }; // 1. 获取流程中最早的收到时间作为本次汇总结束时间 // 获取所有记录 var recordList = this.workContext.getRecordList(); // 获取最早的收到时间(recordTime) var earliestRecordTime = null; var earliestRecordTimeDate = Infinity; // 初始化为一个极大值(表示无穷大) recordList.forEach(record => { if (record.recordTime) { const currentRecordTimeDate = new Date(record.recordTime); if (currentRecordTimeDate < earliestRecordTimeDate) { earliestRecordTimeDate = currentRecordTimeDate; earliestRecordTime = record.recordTime; } } }); // console.log("本次汇总结束时间:", earliestRecordTime); // 2. 查询上次汇总开始的时间(从Summarytable获取) const summaryTable = new this.Table("Summarytable"); summaryTable.listRowSelect( null, // 无过滤条件 "o.completetime desc", // 按完成时间降序 1, // 只取最新一条记录 (summaryData) => { let whereCondition = ""; let rangeDescription = ""; // 情况1:存在上次汇总记录 if (summaryData.type === 'success' && Array.isArray(summaryData.data) && summaryData.data.length > 0) { const lastEndDate = summaryData.data[0].completetime; rangeDescription = `上次汇总结束时间: ${lastEndDate} → 本次开始时间: ${earliestRecordTime}`; // 构建时间范围条件(精确到秒) whereCondition = `o.completetime > '${lastEndDate}' AND o.completetime <= '${earliestRecordTime}'`; } // 情况2:首次汇总(无历史记录) else { rangeDescription = "首次汇总(全量数据)"; whereCondition = `o.completetime <= '${earliestRecordTime}'`; // 取所有历史数据 } // console.log("动态时间范围:", rangeDescription); // console.log("筛选条件:", whereCondition); // 3. 查询SuppliesCacheTable数据 const cacheTable = new this.Table("SuppliesCacheTable"); cacheTable.listRowSelect( whereCondition, // 动态生成的时间条件 "o.completetime desc", // 按完成时间降序 null, // 所有记录 (cacheData) => { if (cacheData.type === 'success' && Array.isArray(cacheData.data)) { // 数据映射 const mappedData = cacheData.data.map(item => ({ pinming: item.pinname || "", model: item.xinghao || "", specification: item.guige || "", number: item.shuliang || 0, unit: item.danwei || "", use: item.usereason || "", completetime: item.completetime })); // 更新表格数据 this.data.datatable.data = mappedData; // console.log(`成功加载 ${mappedData.length} 条记录`); // 空数据提示 if (mappedData.length === 0) { console.log("info", `${rangeDescription} 无新增数据`, 3000); } } else { const errorMsg = cacheData?.message || "数据查询失败"; console.error("SuppliesCacheTable查询失败:", errorMsg); } }, (xhr) => { const errorMsg = xhr.responseText || xhr.statusText; console.error("SuppliesCacheTable请求错误:", errorMsg); } ); }, (xhr) => { const errorMsg = xhr.responseText || xhr.statusText; console.error("SummaryCachetable查询错误:", errorMsg); } ); 保证代码的正确性,去掉里面的报错处理
最新发布
07-24
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值