关于delete运算符的问题

阿齐啊阿齐 2016-07-12 09:23:21
在JavaScript权威指南 第六版(淘宝前端译)第89页有这么一段话:
delete希望它的操作数是一个左值,如果它不是左值,那么delete将不进行任何操作同时返回true。否则,delete将试图删除这个指定的左值。如果删除成功,delete将返回true。

个人觉得这段话很奇怪,如果delete是运算符的话,它的操作数不应该是右值吗?
例如:
var foo={x:1,y:2};
delete foo.x;

我又查了JavaScript权威指南 第六版 英文版(84页),这段话是这么说的:
delete expects its operand to be an lvalue. If it is not an lvalue, the operator takes no
action and returns true. Otherwise, delete attempts to delete the specified lvalue.
delete returns true if it successfully deletes the specified lvalue.

英文版的意思感觉应该跟中文差不多啊,为什么说delete期望它的操作数是一个左值?
...全文
347 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿齐啊阿齐 2016-07-13
  • 打赏
  • 举报
回复
=和delete用法不一样。 还是那个例子: var foo={x:1,y:2}; delete foo.x; delete没有左值啊,难道可以这么用"foo.x delete " ?? 如果delete是操作符,那么foo.x就应该是操作数。那foo.x不应该是个右值吗? 是我搞混了左值、右值的概念吗?
阿齐啊阿齐 2016-07-13
  • 打赏
  • 举报
回复
重新翻了一下书,在JavaScript权威指南 第六版(淘宝前端译)的67页找到了左值的概念: 左值(lvalue)是一个古老的术语,它是指“表达式只能出现在赋值运算符的左侧”。在JavaScript中,变量、对象属性和数组元素均是左值 原来是我理解错了左值的概念,我还以为是运算符左边的操作数呢,(⊙﹏⊙)b 谢谢各位的热心解答~~
天际的海浪 2016-07-13
  • 打赏
  • 举报
回复
delete 操作符是用来删除一个对象的属性。 语法 delete expression expression 应该是一个对象的属性引用,例如: delete object.property 或 delete object['property'] 如果 expression 的计算结果不是一个对象的属性引用,那么,delete不会起任何作用。
NANU-NANA 2016-07-13
  • 打赏
  • 举报
回复
operand :操作 delete 应该位于表达式的左侧。 否则。。。
hookee 2016-07-13
  • 打赏
  • 举报
回复
foo.x可以放在=的左边,也就是 foo.x = 1 是成立的。

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧