一、void

  1、概述:JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。

  2、语法:JavaScript void (express)   或则 JavaScript void express

  3、应用场景

    A、创建了一个超级链接,用户单时会提交表单。

<A HREF="javascript:void(document.form.submit())">单此处提交表单</A>

  B、创建一个死链接:即 a href=#与 a href=javascript:void(0) 的区别

  “#”包含了一个位置信息,默认的锚是#top 也就是网页的上端。

  而javascript:void(0)   仅仅表示一个死链接

二、delete

  1、概述:delete用于删除对象的属性,不能删除一般的变量和函数。

//删除对象中的属性
var obj={name:'tz',age:};
delete obj.age; //true
obj.age; 输出:
undefined //删除成功

但是不能删除一般变量和函数:

//直接删除变量
var x = ;
delete x; // false 删除失败
x; // 1 //删除函数
function t(){alert();}
delete t; //false
typeof t; //"function" //输出:
"function"

深入的应用delete:

  代码的类型分为:全局代码、函数代码、eval代码

1. 当一段代码被当做程序段运行的时候,它是在全局作用域下执行的,也就是全局代码。在浏览器环境下,通常<SCRIPT>元素就是一段全局代码。

2. 所有在function中声明的代码即是函数代码,最常见的是HTML元素的响应事件(<p onclick="...">)。

3. 传入内建的eval函数中的代码段称为eval代码,稍后我们会看到这种类型的特别性。

在源代码中声明的变量和方法实际上都是作为属性被加入到与当前上下文相关联的这个对象当中 。

每一个变量属性都可以有以下任意多 个属性: ReadOnly, DontEnum, DontDelete, Internal。你可以把这些当做标记,标明了变量属性可以持有的某种特性。这里我们最感兴趣的就是DontDelete标记。

在 声明变量或者函数时,他们都变成了当前上下文对象的属性--对于函数代码来说是活动对象,对于全局代码来说则是变量对象,而值得注意的是这些属性在创建时 都带有DontDelete标记,但是显式或者隐式的赋值语句所产生的属性并不会带有这个标记!

非声明性赋值

你可能知道,非声明性的赋值语句会产生全局变量,进而变成全局变量对象的属性。所以根据上面的解释,非声明性的赋值所产生的对象是可以被删除的:

var GLOBAL_OBJECT = this;  

/* 通过声明的全局变量会持有DontDelete,无法被删除。 */
var foo = ; /* 没有经过声明的变量赋值不会带DontDelete,可以被删除。 */
bar = ; delete foo; // false
typeof foo; // "number" delete bar; // true
typeof bar; // "undefined"

需要注意的是属性标记诸如DontDelete是在这个属性被创建的时候 产生的,之后对该属性的任何赋值都不会改变此属性的标记!

总结

  • 变量和函数的声明实际上都会成为全局对象或者当前函数活动对象的属性。
  • 属性都有一个DontDelete标记,用于表明该属性是否能被delete。
  • 变量和函数的声明创建的属性都会带有DontDelete标记。
  • 函数内建的arguments对象作为该函数活动对象的默认属性,创建时总会带有DontDelete标记。
  • 在eval代码块中声明的变量和方法都不带有DontDelete标记。
  • 对还不存在的变量或属性的直接赋值产生的对象不会带有任何标记,包括DontDelete。
  • 对于宿主对象而言,delete操作的结果有可能是不可预料的。

JavaScript高级程序设计(六):关键字 void 和 delete 使用的更多相关文章

  1. JavaScript高级程序设计(四): 关键字With的使用

    一.关键字with 1.含义    with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性.要给对象创建新的属性,必须明确地引用该对象.   简单的说,with为一个或一 ...

  2. javascript 高级程序设计 六

    上一节还有一个注意的地方:建议所有函数的必需参数使用命名参数,而非必须的参数使用对象来封装. 通过这几天的读书,发现了一个深入了解所学知识的一个捷径——读书.本来我在计算机这方法的所有知识一般都是从视 ...

  3. 《Javascript高级程序设计》阅读记录(六):第六章 下

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...

  4. 《Javascript高级程序设计》阅读记录(五):第六章 上

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...

  5. 《JavaScript高级程序设计》学习笔记

    系统学习JS, 从<JavaScript高级程序设计>入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ...

  6. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

  7. 《JavaScript高级程序设计》学习笔记(5)——面向对象编程

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...

  8. 读书笔记(06) - 语法基础 - JavaScript高级程序设计

    写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...

  9. 《Javascript高级程序设计》阅读记录(七):第七章

    <Javascript高级程序设计>中,2-7章中已经涵盖了大部分精华内容,所以摘录到博客中,方便随时回忆.本系列基本完成,之后的章节,可能看情况进行摘录. 这个系列以往文字地址: < ...

随机推荐

  1. 获取EXe版本信息

    function GetVersionString(FileName: string): string;    var    VerInfoSize: DWORD;    VerInfo: Point ...

  2. 第九章、文件与文件系统的压缩与打包 Linux 系统常见的压缩命令

    Linux 系统常见的压缩命令: 在Linux中,压缩文件的扩展名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2』 Linux 支持的压缩命令非常多,且不同 ...

  3. 关于Windows文件名和路径名的那些事

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:关于Windows文件名和路径名的那些事.

  4. Azure 云服务中的实例端点

    Azure云服务(cloud Servive)中有三种端点类型(endpoint type):输入端点(input);内部端点(internal);实例端点(InstanceInput) 1.输入端点 ...

  5. eclipse反编译插件

    eclipse翻译的插件很多,jadclipse 是其中一款.设置很简单. ①.下载net.sf.jadclipse_3.3.0.jar 官方网站:http://sourceforge.net/pro ...

  6. 2014 ACM/ICPC 鞍山赛区现场赛 D&amp;I 解题报告

    鞍山现场赛结束了呢-- 我们出的是D+E+I三道题-- 吾辈AC掉的是D和I两道,趁着还记得.先在这里写一写我写的两道水题D&I的解题报告吧^_^. D题的意思呢是说星云内有一堆排成一条直线的 ...

  7. android驱动[置顶] 我的DIY Android之旅--驱动并控制你的Android开发板蜂鸣器

    改章节个人在深圳游玩的时候突然想到的...这几周就有想写几篇关于android驱动的博客,所以回家到之后就奋笔疾书的写出来发布了 这些天一直在想Android驱动框架层的实现,本文借助老罗教师的博客和 ...

  8. 关于expanded一级二级菜单数据的分组排序

    最新再弄关于expandedlistview相关的东西,所以需求是需要对一级菜单根据时间排序,同时二级菜单也需要根据时间排序,距离现在最近的时间显示在最前面. 效果就是如下: --group2  -- ...

  9. ios开发——实用技术OC篇&地图与定位

    地图与定位 11.1 iOS定位服务 11.2 iOS地图 11.3 Web地图 1 iOS定位服务 iOS中有三个定位服务组件: Wifi定位,通过查询一个Wifi路由器的地理位置的信息.比较省电, ...

  10. [C++知识点]2015.4.18

    1.“static_cast/强制转换”后普通函数.虚函数的表现 A基类 B子类 实例aPtr:将B实例强制抓换得到的A实例 实例bPtr:将A实例强制转换得到的B实例 总结: (1) aPtr因为是 ...