首页 > 其他分享 >delete/声明语句/赋值操作

delete/声明语句/赋值操作

时间:2024-04-22 10:56:09浏览次数:26  
标签:语句 const 变量 let var delete 声明 赋值

delete

var x1 = {a:1}
x1 => {a: 1}
delete x1 => false

window.x2 = {a:1}
x2 => {a: 1}
delete x2 => true

var声明的全局变量和使用let或const声明的全局变量都不能被delete删除,因为它们都是不可配置的。只有直接在全局对象上设置的属性才可以被delete成功删除。

delete 运算符尝试删除值数据时,会返回true,用于表示没有错误(Error)。
delete 0的本质是删除一个表达式的值(Result)。
delete x与上述的区别只在于Result是一个引用(Reference)。
delete其实只能删除一种引用,即对象的成员(Property)。
所以,只有在delete x等值于delete obj.x时delete才会有执行意义。例如with (obj) ...语句中的delete x,以及全局属性global.x。

声明语句

六条声明语句

let x …
声明变量x。不可在赋值之前读。

const x …
声明常量x。不可写。

var x …
声明变量x。在赋值之前可读取到undefined值。

function x …
声明变量x。该变量指向一个函数。

class x …
声明变量x。该变量指向一个类(该类的作用域内部是处理严格模式的)。

import …
导入标识符并作为常量(可以有多种声明标识符的模式和方法)。

在ES6之后,let/const变量与var在声明标识符时没有区别,只是JavaScript拒绝访问尚未绑定值的let/const标识符。

“变量声明(varDelcs)”,而“let/const”则称为“词法声明(lexicalDecls)”。JavaScript环境在创建一个“变量名(varName in varDecls)”后,会为它初始化绑定一个undefined值,而”词法名字(lexicalNames)”在创建之后就没有这项待遇,所以它们在缺省情况下就是“还没有绑定值”的标识符。

NOTE:6种声明语句中的函数是按varDecls的规则声明的;类的内部是处于严格模式中,它的名字是按let来处理的,而import导入的名字则是按const的规则来处理的。所以,所有的声明本质上只有三种处理模式:var变量声明、let变量声明和const常量声明。

赋值操作

变量名 = 值 ❌
lRef = rValue ✅
在JavaScript中,是将右操作数(的值)赋给左操作数(的引用)。也就是说,一个赋值表达式的左边和右边其实“都是”表达式!

标签:语句,const,变量,let,var,delete,声明,赋值
From: https://www.cnblogs.com/beilo/p/18150201

相关文章

  • 选择语句 - if、if-else 和 switch
    选择语句- if、if-else 和 switch项目2023/08/014个参与者反馈 本文内容if语句switch语句C#语言规范另请参阅if、if-else 和 switch 语句根据表达式的值从多个可能的语句选择要执行的路径。仅当提供的布尔表达式的计算结果为 true 时,if,if 语......
  • yield 语句 - 提供下一个元素
    yield语句-提供下一个元素项目2024/04/022个参与者反馈 本文内容迭代器的执行C#语言规范另请参阅在迭代器中使用 yield 语句提供下一个值或表示迭代结束。 yield 语句有以下两种形式:yieldreturn:在迭代中提供下一个值,如以下示例所示:C#复制 运......
  • 52条SQL语句性能优化策略,建议收藏
    52条SQL语句性能优化策略,建议收藏Bug哥不定时发布Java类技术文​关注 585人赞同了该文章本文会提到52条SQL语句性能优化策略。1、对查询进行优化,应尽量避免全表扫描,首先应考虑在WHERE及ORDERBY涉及的列上建立索引。2、应尽量避免在WHERE......
  • c# .net core 将对应的语句转成dsl
    痛点:遇到一个问题,代码嵌套的es查询逻辑,太乱,太复杂。通过代码直观人工去转dsl发现根本不可能。后老看到调试模式能拿到dsl,方法如下https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/debug-mode.html使用debug模式,按文档的设置。设置完成之后,按文档https:......
  • 实验6循环结构程序设计(for语句的应用)
    实验6循环结构程序设计(for语句的应用)一、实验目的1.熟练掌握三种循环语句并能正确运用;2.能够用循环实现一些常用算法,如穷举法,迭代法,递推法等;3.进一步学习程序调试;4.了解中国算法,百钱买百鸡。二、实验硬、软件环境Windows计算机、Devc6.0三、实验内容及步骤实验内容:项目......
  • 实验5循环结构程序设计(while、do-while语句的应用)
    实验5循环结构程序设计(while、do-while语句的应用)一、实验目的1.熟练掌握三种循环语句并能正确运用;2.能够用循环实现一些常用算法,如穷举法,迭代法,递推法等;3.进一步学习程序调试;4.了解中国算法,百钱买百鸡。二、实验硬、软件环境Windows计算机、Devc6.0三、实验内容及步骤项......
  • 【Azure APIM】列举几种在APIM 策略中的主动生产的错误语句
    问题描述在为APIM服务配置了诊断日志(DiagnosticSetting),把日志收集在LogAWorkspace中,需要验证日志中是否能查看到请求的错误信息。所以想人为的来制造一些错误。经过网络搜索,参考Policy的文档介绍后,完成了以下3种错误 第一种:使用 return-response返回指定错误码retu......
  • 重载全局的new和delete
    重载全局的new和delete::operatornew::operatornew[]->不可以被声明与同一个namespace之内new会执行三个动作:->之前的代码提到:new本身会开辟内存空间.所以声明方法需要一个size_tsize的参数inlinevoid*operatornew(size_tsize){}::operatordelete::......
  • 为什么python的数据库语句要用参数化构造的方式
    以下是一个python的数据库插入语句self.cur.execute('''INSERTINTObooks(url,title,product_type,price_excl_tax,price_incl_tax,availability,num_reviews,rating,category,describe)VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)&......
  • 关于post、get、put、delete的区别
    post和put的区别put和post操作都是向服务器端发送数据,但是put是幂等的,而post是非幂等的。所谓幂等,即多次发送同一个请求时候,产生的结果是一样的就是幂等性原则,这是为了当网络出现延迟等,服务器(客户端)之间发送请求没有收到回应,再重新发一次,实际上另一端已经接收到了第一次的请求,接......