首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript是一种上下文无关语言吗?

JavaScript是一种上下文无关语言吗?
EN

Stack Overflow用户
提问于 2015-06-07 18:52:47
回答 1查看 4.4K关注 0票数 19

这篇关于浏览器的工作方式的文章解释了CSS如何是上下文自由的,而HTML则不是。但是JavaScript呢,JavaScript上下文是免费的吗?

我正在学习CFG和正式证明,但离理解如何解决这个问题还有很长的路要走。有人知道JavaScript是否是上下文无关的吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-07 19:27:55

我很确定JS并不是上下文无关的--考虑到任意的代码伪像,您不可能在不知道上下文的情况下确定它的确切含义。

想到的第一个例子是{} --它是表示空对象文本还是空语句块?没有上下文是不可能决定的,但是由于语言允许从以'}‘结尾的语句中省略分号(就像大多数C类语法语言一样),它也可能在上下文中无法判断!考虑{x: {}} -这可能是一个包含空对象的"x“字段的对象文本,或者一个带有标签子语句的语句块(其中标签是'x‘,子语句是{})。也许语言规范在这样的场景中有一些选择正确解释的规则,但无论如何,仅从这些例子来看,语言似乎并不是没有上下文的。

JavaScript的“自动分号插入”功能肯定无助于区分表达式和语句。

下面是另一个需要考虑的问题:function x() {} --这是做什么的?如果它是一个语句,它将声明一个新的悬挂变量'x‘,这个函数作为它的值。如果它是一个表达式,它简单地计算为一个函数,它的上值'x‘绑定到同一个函数(用于自引用)。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30697267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档