JavaScript高级程序设计(六):关键字 void 和 delete 使用
一、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 使用的更多相关文章
- JavaScript高级程序设计(四): 关键字With的使用
		一.关键字with 1.含义 with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性.要给对象创建新的属性,必须明确地引用该对象. 简单的说,with为一个或一 ... 
- javascript 高级程序设计 六
		上一节还有一个注意的地方:建议所有函数的必需参数使用命名参数,而非必须的参数使用对象来封装. 通过这几天的读书,发现了一个深入了解所学知识的一个捷径——读书.本来我在计算机这方法的所有知识一般都是从视 ... 
- 《Javascript高级程序设计》阅读记录(六):第六章 下
		这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ... 
- 《Javascript高级程序设计》阅读记录(五):第六章 上
		这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ... 
- 《JavaScript高级程序设计》学习笔记
		系统学习JS, 从<JavaScript高级程序设计>入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ... 
- javascript高级程序设计学习笔记
		javascript高级程序设计,当枕头书已经好久了~zz 现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ... 
- 《JavaScript高级程序设计》学习笔记(5)——面向对象编程
		欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ... 
- 读书笔记(06) - 语法基础 - JavaScript高级程序设计
		写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ... 
- 《Javascript高级程序设计》阅读记录(七):第七章
		<Javascript高级程序设计>中,2-7章中已经涵盖了大部分精华内容,所以摘录到博客中,方便随时回忆.本系列基本完成,之后的章节,可能看情况进行摘录. 这个系列以往文字地址: < ... 
随机推荐
- Stage3D学习笔记(七):动态纹理
			本章用来作为Starling的滤镜实现原理的一个补充,但是为了了解原理,我们会使用原生API进行编码. 我们知道,当我们调用drawTriangles方法时,我们的图像是绘制到后台缓冲区的,只有调用p ... 
- API功能测试如何实施(转载自测试之道 微信公众号)
			什么是API 关于定义什么的,直接维基可得: API(Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定.由于近 ... 
- Sql Server 带参数的存储过程执行方法
			Sql Server 带参数的存储过程执行方法 Visual C# 动态操作 SQL Server 数据库实例教程(4):带参数的存储过程执行方法 上一篇文章介绍了带参数的SQL语句执行方法和不带参数 ... 
- iOS 正则表达式小结
			#pragma mark - 正则第一种表示方式-利用NSPredicate(谓词)匹配// NSString *email = @"15078357696@163.com" ... 
- ABAP ALV 颜色设置(行,列,单元格)
			BCALV_EDIT_03 http://blog.sina.com.cn/s/blog_a87b19300102who3.html 关于ALV表格颜色,这种需求在项目中会经常用到. 列颜色 列的颜色 ... 
- webservice 地址
			快递查询WEB服务 http://webservice.36wu.com/ExpressService.asmx 支持上百家快递/物流查询,准确高效,所有数据均来自快递服务商.此数据返回类型进行了封装 ... 
- UIView的Touch事件UIControlEvents详解
			首先,UIControlEvents有这个几种: UIControlEventTouchDown = << , // on all touch downs UIControlEventTo ... 
- linux修改文件权限和用户组管理小结
			如何在linux下修改组权限 chmod g+r path/file 加读权限 当前目录 chmod -R g+r path/file 加读权限 当前目录以及子目录 g-r 减读权限g+w 加写权限g ... 
- DotNet IOC Framework - Microsoft Unity介绍
			一. 新建一个ASP.NET MVC4项目 二. 安装Microsoft Unity 1) 管理Nuget程序包 2)安装Unity3程序包 在你的App_Start文件夹里会多出来两个文件 三. 一 ... 
- 原 Debian设置开机自动启动与关闭
			发表于1年前(2013-01-08 13:01) 阅读(2380) | 评论(0) 2人收藏此文章, 我要收藏 赞0 开机自动启动 update-rc.d chkconfig 熟悉debian系统 ... 
