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权威指南的笔记,如有不对, ...
随机推荐
- 数据结构(左偏树,可并堆):BNUOJ 3943 Safe Travel
Safe Travel Time Limit: 3000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class ...
- 网络流(最大流):POJ 1149 PIGS
PIGS Time Limit: 1000ms Memory Limit: 10000KB This problem will be judged on PKU. 64-bit integer(整数) ...
- C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常,不存在从对象类型System.Windows.Forms.DateTimePicker到已知的托管提供程序本机类型的映射。
一:C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常 其实,这个问题与C#的垃圾回收有关.垃圾回收器管 理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的 垃圾回收器 ...
- 用DELPHI操作EXCEL Word
用DELPHI操作EXCEL 在DELPHI中显示EXCEL文件,可用以下简单代码做到.但要实用,则需进一步完善. var Form1: TForm1; EApp:variant;implemen ...
- shell timeout
写脚本的时候,经常需要用到超时控制.看<shell专家编程>时看到一个好例:修改了一下, 1.超过timeout时间还没执行完,则kill进程,发邮件告警: set-xmailSend() ...
- OneToMany与ManyToOne的属性
供自己查阅,嫌低级的勿喷! 1.OneToMany的属性 ①targetEntity 定义关系类的类型,默认是该成员属性对应的类类型,所以通常不需要提供定义. ②mappedBy 定义类之间的双向关系 ...
- vs2008 多人同时开发项目时的代码注释规范格式 分类: C#小技巧 2014-04-23 14:12 297人阅读 评论(0) 收藏
多人同时开发一个项目,区分项目的那个窗体是谁开发的,例:下面的格式 /************************************************ 模块:服务器设置 ...
- C++ 求阶乘 四种方法
来总结下求阶乘的各种方法哈. 写在最前:①各个代码仅仅是提供了求阶乘的思路,以便在实际须要时再来编码,代码并不健壮!②各个程序都在1到10内測试正确. 代码一: #include<iostrea ...
- TeleMCU视频会议之Android版本号WebRTC client支持
本文原创自 http://blog.csdn.net/voipmaker 转载注明出处. 最新版本号TeleMCU 添加了Android手机端WebRTC视频会议能力,Android手机安装Chro ...
- [置顶] android 自定义ListView实现动画特效
通过自定义ListView实现动画特效,被点击元素A向前移,A之前元素往后移动. 重点在于动画的实现: 具体代码如下: package com.open.widget; import java.uti ...