- digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
- num = digit+
- op = sum | sub | mul | div
- expr = num | op expr+
| 符号是啥意思呢。
在控制台打印的这些变量的值有点奇怪。。求大佬讲解一下。。
| 符号是啥意思呢。
在控制台打印的这些变量的值有点奇怪。。求大佬讲解一下。。
JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。
前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。
| 就是"或"
有一个规则是:
0 | 1 = 1
0 | 0 = 1
1 | 1 = 1
1 | 0 = 1
当然了,这是针对 2 进制的。
digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
实际上转化成 2 进制就是
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
1001 |
结果是 1111,10 进制就是 15
首先纠正一下楼主的描述……
楼主贴出的这段不是 JS 代码,这是 JS 的文法,它描述了 JS 解释器应该如何解读 JS 代码
更具体的说,这段是 JS 文法的符号定义
所以楼上虽然正确地解释了 JS 里 | 运算符的作用,但并不是楼主贴的这段东西里的东西- -因为楼主的问题就问错了…这跟变量声明没关系
这里是说明了 JS 中有如下几种“符号”(注意这个符号指的是文法中的符号,不是我们常说的运算符号,具体的需要楼主了解一下编译原理的知识)
符号 digit,其表现为: 0 或 1 或 2 或 3 或 4 或 5 或 6 或 7 或 8 或 9
符号 num,其表现为:一个或多个连续的 digit
符号 op,其表现为:符号 sum 或符号 sub 或符号 mul 或符号 div (楼主贴的这段里没有这四个符号的定义,不过他们应该分别对应 +-*/)
符号 expr,其表现为:符号 num 或者符号 op 后面跟着一个或多个连续的符号 expr
在 JS 解释器的眼中,一篇 JS 源代码是这样的:
比如有源代码如下:
1 + 12
在 JS 解释器的眼中是这样:
num op num
这样说感觉很绕,三两句话也讲不太清楚…要想完全理解还是需要楼主了解一下编译原理……
Groovy 编程语言了解一下😄
Spock 测试框架了解一下😄
class DataDriven extends Specification {
def "maximum of two numbers"() {
expect:
Math.max(a, b) == c
where:
a | b || c
3 | 5 || 5
7 | 0 || 7
0 | 0 || 0
}
}
有空闲时间是接外包好呢还是学习好呢?
Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。
你若安好,便是晴天。
提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。
flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。
“梦想从学习开始,事业从实践起步” —— 习近平
Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。
星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网
Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。
GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。
Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.
GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。
JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。
Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。
WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。
Communication channel for makers and users.
SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。
正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。
Open Source, Open Mind, Open Sight, Open Future!
Latke 是一款以 JSON 为主的 Java Web 框架。
你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!
红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。
CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。
MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。
Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。
各种网址链接、内容导航。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于