美文网首页
JavaScript 之 delete

JavaScript 之 delete

作者: _一九九一_ | 来源:发表于2019-11-19 11:26 被阅读0次

delelet 操作

  • delete从不删除值。delete只能删除引用
  • 这个操作的正式语法设计并不是“删除某个东西”,而是“删除一个表达式 的结果”:

delete UnaryExpression

表达式的值

在 ECMAScript 的规范中,称为“引用”。 这是一种称为“规范类型”的东西。

如何理解 delete 0

delete 0

  • JavaScript 将 0 视为一个表达式,并尝试删除它的求值结果 这个0是一个表达式求值;
  • 现在这里的 0,其实不是值(Value)类型的数据,而是一个表达式运算的结果值 (Result)。而在进一步的删除操作之前,JavaScript 需要检测这个 Result 的类型
    1. 如果它是值,则按照传统的 JavaScript 的约定返回 true;
    2. 如果它是一个引用,那么对该引用进行分析,以决定如何操作。
  • delete 0 这种行为并不真的能够发生,它什么也没做,只是返回了true而已。

ECMAScript 约定:任何表达式计算的结果(Result)要么是一个值, 要么是一个引用。

如何理解 delete x

delete x

  • 出于 JavaScript 是动态语言这项特性,所以从根本上来 说,我们是没有办法在语法分析期来判断x的性质的。所以现在,需要有一种方法在运行期
    来标识x的性质,以便进一步地处理它。
  • delete x中的x是一个引用;
  • “delete x”归根到底,是在删除一个表达式的、引用类型的结果(Result),而不 是在删除 x 表达式和这个删除表达式的值(Value)。

delete 正常语法

delete 不仅仅是要操作 0 或 x 这样的单个记号或标识符(例如变量)。因为这个语法实际 起作用的是一个对象的属性,也就是“删除对象的成员”。那么它真正需要的语法其实是:

delete obj.x

如何理解 x=x

x=x

所有赋值操作的含义,是将右边的“值”,赋给左边用于包含该值的“引用”。

x=x 会被翻译成:

x = GetValue(x)

x=x的语义并不是“x 赋给 x”,而是“把值 x 赋给引用 x”。

如何理解 delete obj.x

delete obj.x

delete obj.x 中 obj.x 是一组表达式连续运算的结果(Result/ 引用);

总结:

  • “引用”是在 ECMAScript 规范层面的概念,因此在 JavaScript 语言中能操作它的
    语法元素其实非常非常少, delete 就是其中之一
  • delete 运算符尝试删除值数据时,会返回 true,用于表示没有错误。 delete 0 的本质是删除一个表达式的结果
  • delete x 与上述的区别只在于 Result 是一个引用
  • delete 其实只能删除一种引用,即对象的成员

相关文章

  • JavaScript 之 delete

    delelet 操作 delete从不删除值。delete只能删除引用 这个操作的正式语法设计并不是“删除某个东西...

  • this、原型链、继承

    深入详解javascript之delete操作符深入javascript(六):instanceof 运算符重新理...

  • [JavaScript] delete operator

    delete运算符,并不会直接释放内存,但是它会断开引用,间接的与内存管理有关。 delete运算符会删除给定对象...

  • JavaScript进阶之:十、delete关键字

    delete关键字的作用:删除对象的属性 语法:delete 对象.属性可以删除没有使用var关键字声明的全局变量...

  • javascript 初始笔记

    JavaScript 笔记 1.对象 delete:动态删除 xxx in xxx :判断属性值是否在这个对象中例...

  • Javascript中delete操作概述

    delete 可以删除一些变量,属性。但是并不是全部都可以删除。一些内置的核心客户端属性不能删除,用户通过var声...

  • 为 Array 增加一个 remove 方法

    JavaScript的数组对象上确实没有一个叫做delete或者remove的方法。 这段代码来自 jQuery的...

  • 041|JavaScript delete操作符

    通过前面的课程中我们已经知道在JavaScript中可以给对象添加属性。既然可以给对象添加属性,那是否能够给对象移...

  • JavaScript知识整理——关于值

    数组 在Javascript中,数组可以容纳任何类型的值。 使用delete运算符删除数组中单元时,lenght属...

  • HBase CURD之Delete

    HBase CURD之Delete HTable提供了删除方法,同时与之前的方法一样有一个相应的类为Delete。...

网友评论

      本文标题:JavaScript 之 delete

      本文链接:https://www.haomeiwen.com/subject/hzcvbctx.html