We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
var company = { address: 'beijing' } var yideng = Object.create(company); delete yideng.address console.log(yideng.address); // 写出执行结果,并解释原因
每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案 欢迎大家在下方发表自己的优质见解 二维码加载失败可点击 小程序二维码
The text was updated successfully, but these errors were encountered:
答案 beijing
解析 这里的 yideng 通过 prototype 继承了 company的 address。yideng自己并没有address属性。所以delete操作符的作用是无效的。
知识点 1.delete使用原则:delete 操作符用来删除一个对象的属性。 2.delete在删除一个不可配置的属性时在严格模式和非严格模式下的区别: (1)在严格模式中,如果属性是一个不可配置(non-configurable)属性,删除时会抛出异常; (2)非严格模式下返回 false。 3.delete能删除隐式声明的全局变量:这个全局变量其实是global对象(window)的属性 4.delete能删除的: (1)可配置对象的属性(2)隐式声明的全局变量 (3)用户定义的属性 (4)在ECMAScript 6中,通过 const 或 let 声明指定的 "temporal dead zone" (TDZ) 对 delete 操作符也会起作用 delete不能删除的: (1)显式声明的全局变量 (2)内置对象的内置属性 (3)一个对象从原型继承而来的属性 5.delete删除数组元素: (1)当你删除一个数组元素时,数组的 length 属性并不会变小,数组元素变成undefined (2)当用 delete 操作符删除一个数组元素时,被删除的元素已经完全不属于该数组。 (3)如果你想让一个数组元素的值变为 undefined 而不是删除它,可以使用 undefined 给其赋值而不是使用 delete 操作符。此时数组元素是在数组中的 6.delete 操作符与直接释放内存(只能通过解除引用来间接释放)没有关系。
7.其它例子 (1)下面代码输出什么?
var output = (function(x){ delete x; return x; })(0); console.log(output);
答案:0,delete 操作符是将object的属性删去的操作。但是这里的 x 是并不是对象的属性, delete 操作符并不能作用。
delete
x
(2)下面代码输出什么?
var x = 1; var output = (function(){ delete x; return x; })(); console.log(output);
答案:输出是 1。delete 操作符是将object的属性删去的操作。但是这里的 x 是并不是对象的属性, delete 操作符并不能作用。
(3)下面代码输出什么?
x = 1; var output = (function(){ delete x; return x; })(); console.log(output);
答案:报错 VM548:1 Uncaught ReferenceError: x is not defined,
(4)下面代码输出什么?
var x = { foo : 1}; var output = (function(){ delete x.foo; return x.foo; })(); console.log(output);
答案:输出是 undefined。x虽然是全局变量,但是它是一个object。delete作用在x.foo上,成功的将x.foo删去。所以返回undefined
Sorry, something went wrong.
No branches or pull requests
扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。
The text was updated successfully, but these errors were encountered: