4.9优先级1
需积分: 0 187 浏览量
更新于2022-08-04
收藏 231KB PDF 举报
在编程语言中,运算符的优先级是一个至关重要的概念,它决定了表达式中不同运算的计算顺序。在JavaScript中,运算符的优先级尤其重要,因为它直接影响到程序的正确执行。在给定的文件【4.9优先级1】中,讨论了如何在将Blockly的程序转换为JavaScript时,正确处理运算符的优先级,以生成符合预期的代码。
我们要理解,当没有明确的括号来指定计算顺序时,JavaScript会按照预定义的运算符优先级进行计算。例如,乘法和除法的优先级高于加法和减法。在文件中提到的例子中,`alert(2*3+4)` 这样的表达式会被JavaScript解释为 `alert(2*(3+4))`,因为乘法比加法有更高的优先级。
为了避免过度使用括号导致代码混乱,每个语言的生成器,如Blockly的JavaScript生成器,都会有一个运算符优先级的有序列表。这个列表定义了每个运算符的优先级等级,等级越高,优先级越强。例如,`Blockly.JavaScript.ORDER_ATOMIC` 优先级为0,是最基础的单位,而 `Blockly.JavaScript.ORDER_EXPONENTIATION` 优先级为5.0,高于乘法、除法和取模运算。
以下是一些JavaScript运算符的优先级等级:
1. `ORDER_ATOMIC`: 原子表达式,如变量或常量,优先级0。
2. `ORDER_NEW`, `ORDER_MEMBER`, `ORDER_FUNCTION_CALL`: `new`运算符,成员访问(`.` 和 `[]`),函数调用,优先级1.x。
3. `ORDER_INCREMENT`, `ORDER_DECREMENT`: 自增和自减运算符(`++` 和 `--`),优先级3。
4. 位运算符,如`BITWISE_NOT`, `UNARY_PLUS`, `UNARY_NEGATION`, `LOGICAL_NOT`, `TYPEOF`, `VOID`, `DELETE`, `AWAIT`,优先级4.x。
5. `ORDER_EXPONENTIATION`: 幂运算符(`**`),优先级5.0。
6. `ORDER_MULTIPLICATION`, `ORDER_DIVISION`, `ORDER_MODULUS`: 乘法、除法和取模运算,优先级5.x。
7. `ORDER_SUBTRACTION`, `ORDER_ADDITION`: 减法和加法,优先级6.x。
8. 位移运算符,如`BITWISE_SHIFT`,以及关系运算符,如`RELATIONAL`, `IN`, `INSTANCEOF`,优先级7和8。
9. `ORDER_EQUALITY`: 比较运算符,如`==`, `!=`, `===`, `!==`,优先级9。
10. 位与运算符 `BITWISE_AND`, 位异或运算符 `BITWISE_XOR`, 位或运算符 `BITWISE_OR`,优先级10至12。
11. 逻辑运算符,如`ORDER_CONDITIONAL`(三目运算符), `ORDER.logicalAND`, `ORDER.logicalOR`,优先级13和14。
12. 条件运算符(三目运算符)`ORDER_CONDITIONAL`,优先级13。
13. `ORDER_ASSIGNMENT`:赋值运算符,优先级14至21,根据赋值类型不同优先级也不同。
通过这些优先级,生成器可以智能地决定何时需要添加括号来确保代码的正确性。例如,当遇到乘法和加法混合的表达式时,生成器可以根据优先级列表决定是否需要在加法运算符两侧加上括号,以确保乘法先计算。
在教育环境中,生成人类可读的代码尤为重要,因为这有助于初学者理解代码的执行过程。因此,理解并正确应用运算符优先级是编程教学和实践中的关键环节。通过使用这些优先级列表,Blockly的代码生成器能够生成既准确又易读的JavaScript代码,从而为学习者提供更好的编程体验。
村上树树825
- 粉丝: 23
- 资源: 292
最新资源
- 基于MATLAB的500kV LCC-HVDC 输电仿真 两侧交流系统电压为345kV,交流侧分别设计了相应的滤波器,直流电压等级为500kV,直流电流为2KA,直流功率为1000MVA,下面依次为整
- matlab simulink车辆防抱死制动系统ABS建模仿真 单轮 双轮
- 基于hadoop的新闻推荐系统 用户协同过滤推荐 基于大数据的新闻推荐系统 推荐原理:以用户对新闻的喜欢和收藏行为作为基础数据集,应用hadoop通过mapreduce程序进行协同过滤计算,得出用户对
- C#上位机模板程序,使用的是台达AS228主机PLC,功能齐全,自动运行页面、切页面、手动调试、参数设置页面都有
- TCR+fc型svc无功补偿仿真模型有详细资料
- 基于光风储能vsg无缝切(预同步)控制策略 前0.3秒风光储+直流负载独立运行 0.3s时,断开直流负载和直流源,风光储+VSG+交流负载合并运行 0.6s时,VSG预同步模块并网 1.3s时,改变t
- 自动驾驶图像全景分隔,基于HRnetSegmentation从训练工程到tensorRT工程部署Demo闭环一套,包含训练工程及部署工程,和环境的配置说明,已在实际项目中使用 大厂自动驾驶工程师沉淀
- MATLAB代码 风光场景生成 场景削减 概率距离削减法 蒙特卡洛法 MATLAB:基于概率距离快速削减法的风光场景生成与削减方法 参考文档:《含风光水的电厂与配电公司协调调度模型》完全复现场景削减
- 基于mppt的光伏svpwm逆变并网 通过分析光伏电池的输出特性与外部环境的关系搭建出仿真模型,引入了变步长扰动观察法实现的最大功率追踪 MPPT 控制算法 并设计三相逆变器SVPWM双闭环控制策略
- 伺服电机代码 直线电机代码 FPGA架构伺服代码 软件硬件方案, 一个fpga控制多个电机,目前一个fpga最多控制6伺服驱动,所有内容均有fpga完成,控制曲线(T曲线),位置环,速度环,电流环,低
- 三相逆变器重复控制 在simlink中搭建了逆变器的重复控制模型,滤波器环节采用了陷波器与二阶低通滤波器 逆变器输出电压的THD仅仅只有0.52% 整个仿真全部离散化,采用离散解析器,控制与采样
- 锁相环 采用simlink仿真嵌C语言实现锁相环,整个仿真没有一个模块,只有C需要写的锁相环函数 仿真结果如图所示,基于双二阶广义积分器的锁相环成功锁得电网相位 对C语言写的代码做了详尽的注释
- PWM整流器仿真 在simulink中搭建了PWM整流器,采用电压电流双闭环控制,实现了网侧电压与电流同相位,单位功率因数运行 采用基于双二阶广义积分器的锁相环,锁得电网相位 整个仿真全部离散化
- matlab代码:计及条件风险价值的电-气综合能源系统能量-备用分布鲁棒优化 关键词:wasserstein距离 CVAR条件风险价值 分布鲁棒优化 电-气综合能源 能量-备用调度 参考文档Ene
- 基于DSTATCOM无功补偿的风电并网模型 Matlab simulink 质量过硬 仿真简介: 1、2个风电:一个基于双馈风机DFIG、一个基于感应风机 2、仿真总时长30s,10s时,感应风机
- 考虑储能削峰填谷的含DG配电网可靠性评估 1、基于序贯蒙特卡洛的配电网可靠性评估; 2、基于序贯蒙特卡洛的含DG配电网可靠性评估; 3、基于区间迭代法优化储能出力进行削峰填谷; 4、基于上述内容进一