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章中已经涵盖了大部分精华内容,所以摘录到博客中,方便随时回忆.本系列基本完成,之后的章节,可能看情况进行摘录. 这个系列以往文字地址: < ...
随机推荐
- android获取根视图
android获取根视图 activity.getWindow().getDecorView()
- 【C语言】-选择结构-if语句
if语句:也可称条件语句,是根据所给定条件的值是真还是假决定执行不同的分支. if语句有单分支.双分支.多分支以及if语句的嵌套等多种形式. 单分支if语句: if (条件表达式) { 语句组1; } ...
- NGUI学习笔记(一):官方视频学习记录
学习NGUI一直断断续续的,目前打算做一个总结的笔记. 我使用的是比较老的3.6.0版本. 1.使用NGUI,需要开启“Edit”->“Project Settings”->“Physic ...
- Outlook账户迁移帮助
Outlook账户迁移指南 1. 介绍 开贴聊聊如何迁移Outlook用户账户到另外一台电脑. 相信许多Outlook用户都遇到过这样的情况:买来一台新电脑,安装完Outlook后,想把旧电脑里面的O ...
- iOS开发笔记系列-基础3(多态、动态类型和动态绑定)
多态:相同的名称,不同的类 使不同的类共享相同方法名称的能力成为多态.它让你可以开发一组类,这组类中的每一个类都能响应相同的方法名.每个类的定义都封装了响应特定方法所需要的代码,这使得它独立于其他的类 ...
- go strings 常用的几个函数
fmt.Println(strings.ToUpper("hello world")) //转换为大写 fmt.Println(strings.ToLower("H ...
- 【剑指Offer学习】【全部面试题汇总】
剑指Offer学习 剑指Offer这本书已经学习完了.从中也学习到了不少的东西,如今做一个总的文件夹.供自已和大家一起參考.学如逆水行舟.不进则退.仅仅有不断地学习才干跟上时候.跟得上技术的潮流! 全 ...
- C++容器类对象函数參数问题
总之中的一个句话:容器类对象作为函数參数,与整数类型作为函数參数的传递特性同样. 验证程序 #include "stdafx.h" #include <iostream> ...
- 应用之星推出“图文app”制作工具,并附上教程
应用之星已推出的"图文"app制作工具,是高速制作图文电子书,图文杂志等一切有关图文资料的app生成工具,以下跟大家介绍"图文"制作教程,简单快捷,大致分三大步 ...
- 正则匹配ab不匹配aab
var a = "aababaabababababaab"; a.replace(/(^|[^a])(ab)+/g, "$1"); var a = " ...