javascript权威指南学习笔记3
今天看到第四章,记录一下其中的几个点,俗话说:好记性不如烂笔头嘛。
4.9 in运算符和instanceof运算符
in运算符希望它的左操作数是一个字符串或可以转化为字符串,希望它的右操作数是一个对象。如果右侧的对象拥有名为左操作数值的属性名,那么表达式返回true,例如:
var point={x:1,y:1};//undefined
"x" in point;//true
"z" in point;//false
"toString" in point;//true
var data=[7,8,9];//undefined
"0" in data;//true
"1" in data;//true
1 in data;//true
3 in data;//false
instanceof运算符希望左操作数是一个对象,右操作数标识对象的类。如果左侧的对象是右侧类的实例,则表达式返回true,否则返回false。比如:
var d=new Date();//undefined
d instanceof Date;//true
d instanceof Object;//true
d instanceof Number;//false
var a=[1,2,3];//undefined
a instanceof Array;//true
a instanceof Object;//true
a instanceof RegExp;//false
4.10 逻辑表达式(&&、||、!)
这里有一些注意事项:&&的操作数不一定是布尔值,可以是一些真值或假值(null等),要牢记它的判断顺序,如果左侧值是假,则不判断右侧,直接返回左侧的结果。否则,返回右侧的值。即“”短路“。
var o={x:1};
var p=null;
o&&o.x;//
p&&p.x;//null
而||的判断顺序则是如果左侧为真,那么返回这个真值,否则再计算右侧的值,返回。
var max=max_width||preference.max_width||500;//默认参数
//将o的成员属性复制到p中,并返回p
function copy(o.p){
p=p||{};//如果像参数p中没有传入任何对象,则使用一个新创建的对象
//函数体内的主逻辑
}
4.12 表达式计算(eval)
eval()只是一个参数。如果传入的参数不是字符串,它直接返回这个参数。如果是字符串,它会把字符串当成javascript代码进行编译,如果编译失败则抛出一个语法错误异常(SyntaxError)。如果编译成功,则开始执行,并返回字符串中最后一个表达式或语句的值,如果最后一句没有值,则返回undefined。如果字符串抛出异常,这个异常将把该调用传递给eval()。
关于eval()的作用域问题:eval查找变量的值和定义新变量和函数的操作和局部作用域中的代码完全一样。
eval具有更改局部变量的能力。主要看示例吧:
var geval=eval;
var x="global",y="global";
function f(){
var x="local";
eval("x+='changed';");
return x;
}
function g(){
var y="local";
geval("y+='changed';");
return y;
}
console.log(f(),x);// localchanged global
console.log(g(),y);// local globalchanged
而严格意义下的eval不能定义新的局部变量。将eval列为保留字,使之更像一个运算符。
4.13 其他运算符
条件运算符 ?: 等价于if else的简写
typeof运算符 常用写法:(typeof value=="string")?"'"+value+"'":value;
delete运算符 var声明的变量是无法删除的
void运算符<a href="javascript:void window.open();">打开一个新窗口</a>
javascript权威指南学习笔记3的更多相关文章
- JavaScript 权威指南-学习笔记(一)
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...
- JavaScript权威指南学习笔记6
这两天主要翻看了书中的第18-22章,重点看了第17章:事件化处理,其它几章节主要是翻了下书知道有相关的概念,没有真正理解其中的内容,或者没有考虑究竟如何能把里面的内容应用到实际的项目中.说的讽刺一点 ...
- javascript权威指南学习笔记1
打开这本书,进入到javascript的世界.以前都是看各种视频,感觉什么收获也没有,反而弄得脑袋混乱,希望能够按照这本书的节奏掌握javascript这门语言,为我的前端学习打下基础. 学习前准备: ...
- JavaScript权威指南学习笔记4
今天看了第9.10.11章,感觉收获最大还是正则表达式那章节,不过这些不用太多脑子思考,问题用到了直接查书就可以了,下面分别总结一下: 第9章类和模块:分9节,前面8节都是在讲类相关的知识,最后一节讲 ...
- Javascript权威指南学习笔记
第二章:词法结构 ;function a(){alert(2)};//前面的分号保证正确地语句解析 第三章:类型.值和变量 基本概念: 1.数据类型---能够表示并操作的值的类型叫做数据类型. 2.变 ...
- javascript权威指南学习笔记2
Javascript语言核心(2~12章) 第三章:类型.值.变量 1.数字: overflow(Infinity, -Infinity).underflow(+0,-0) 非数字值:它和任何值都不相 ...
- JavaScript权威指南学习笔记5
下午在杭图回去前看了书中第二部分的13-17章,看的很粗,感觉大部分东西自己已经知道或者平时开发中不会用到,很多章节只是简单的翻了一下,没有仔细思考里面说到的道理,下面对各章节简单的记录下. 第13章 ...
- HTTP权威指南-学习笔记
目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...
- CSS权威指南学习笔记系列(1)CSS和文档
题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对, ...
随机推荐
- 【转】C/C++ 内存对齐
[转自]http://wenku.baidu.com/view/8eaaa26925c52cc58bd6bed2.htmlC/C++内存对齐 一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都 ...
- 转:给C++初学者的50个忠告
转:给C++初学者的50个忠告 1.把C++当成一门新的语言学习(和C没啥关系!真的.): ...
- Response.End(); 用HttpContext.Current.ApplicationInstance.CompleteRequest 代替
Response.End(); 会报异常 HttpContext.Current.ApplicationInstance.CompleteRequest 这里有个讨论的帖子很有意思:http://q. ...
- 动软代码生成器 可用于生成Entity层,可更改模板 /codesmith 也可以
动软代码生成器官方下载地址:http://www.maticsoft.com/download.aspx 教程:http://jingyan.baidu.com/article/219f4bf7dfd ...
- HDU1247 Hat’s Words(Trie的动态内存版本)
Hat’s Words Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- hdu 4602 Partition (概率方法)
Partition Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- [PWA] 12. Intro to IndexedDB
Use the library indexedDB-promised. Create a database and stroe: import idb from 'idb'; // Open(db_n ...
- 定制属于自己的Chrome起始页
个人感觉没什么技术含量,可是很有用.我定制的起始页面例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ19saWNodW4=/font/5 ...
- [转] 使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制
为了提高性能,几乎所有互联网应用都有缓存机制,其中Memcache是使用非常广泛的一个分布式缓存系统.众所周知,LAMP是非常经典的Web架构方式,但是随着Nginx的 成熟,越来越多的系统开始转型为 ...
- [转] boost::function用法详解
http://blog.csdn.net/benny5609/article/details/2324474 要开始使用 Boost.Function, 就要包含头文件 "boost/fun ...