Undefined类型

  1. 该类型只有一个值,即undefined。
  2. 对未初始化的变量和未定义的变量,用typeof检测,都会返回‘undefined’

Null类型

  1. 该类型只有一个值,null。并且从逻辑角度看,null值表示一个空对象指针,所以typeof null =='object'。
  2. 只要意在保存对象的变量还没有真正的保存对象,就应该明确的让该变量保存null值。
var a = null;
if (a) {
a.again = 1;
} else {
a.again = 2;
}
//这种情况会报错
var a = {};
if (a) {
a.again = 1;
} else {
a.again = 2;
} //这种情况不会报错

Boolean类型

  1. false值总结:

    1.1 Number类型:0,-0,NaN.

    1.2 Undefined : undefined。

    1.3 Null : null.

    1.4 String : ''.

    1.5 Boolean :false.

Number类型

  1. 浮点数精度问题
var c = 0.1+0.2;
c!=0.3;
  1. 数值范围

2.1 某次计返回infinity的话,没法参与下次计算,因为infinity不能参与计算,可以用isFinite()来检测。

  1. NaN != NaN
  2. isNaN()函数可以用来检测一个变量是否可以转化为数值.
parseInt(''); //NaN
Number('') == 0
  1. parseInt()与parseFloat()的区别:parseFloat()始终会忽略前导的0;parseFloat()只会解析十进制值,没有第二个参数制定基数的说法。

  2. 一个值转化为字符串有两种方式:toString()[Null,undefined值没有这个方法],String().

    6.1 String():在不知道要转化的值是不是null或者undefined的时候,可以选择。可以将任何类型的值转化为字符串。

    String(null)       //'null'
    String(undefined) //'undefined'

布尔操作

  1. 一共有三个:非,与,或。
Boolean({})  ///true
  1. 不能在逻辑与操作中使用未定义的值,会报错。

乘性操作

  1. 如果参与乘法计算的某个操作不是数值,后台会先使用Number()转型函数将其转换为数值

加性操作

  1. 如果有一个操作数是字符串,泽相当于拼接字符串。
var b = '123'+78;
//b;
//"12378"
var a='as'+12;
//a;
//"as12"
var c='e'+'f';
//c;
//"ef"
  1. 如果有一个操作数是对象、数值或者布尔值:会调用他们的toString()方法取得字符串值,然后用字符串的相加规则,undefined和null调用String()方法,取得'undefined'和'null'。

关系操作(>,<,=,<=,>=)

  1. 总结:都是字符串的话,直接比较,其他的情况都要先将两个操作上转化为数值,再比较。

  2. 注意: 如果字符串操作数不能被转化为合理的数值,比如NaN,任何和NaN进行的关系比较,都是false.

  3. null == undefined //true

4 . null === undefined //false

for-in

  1. ECMAScript对象属性没有顺序,通过for-in循环输出的属性名的顺序是不可预测的。具体来讲,所有的属性都会被返回来,但是返回的先后顺序可能根据浏览器有所不同。

  2. 为了保证最大限度的兼容性,需要在使用for-in循环之前,先检测确认该对象的值是不是nulll或者undefeined.(因为有的要报错,有的会直接终止循环,但不报错)。

  3. sarfari3以前的版本会出现一个bug,有的属性会返回两次。(注意兼容性 )

with语句

  1. with语句是将代码的作用域设置到一个特定的对象中。

  2. 严格模式下不允许使用,否则会报错。

  3. 定义with语句的目的主要是为了简化多次编写的同一个对象的工作。

//改善之前
var qs = location.search.substring(1);
var hostname = location.hostname;
var url = location.href;
//使用with语句
with(location){
var qs = search.substring(1);
var hostname = hostname;
var url = href;
}

在这个重写的例子中,使用with关联了location对象。意味着在with语句的代码块中,每个变量首先被认为是一个局部变量,而如果在局部变量中找不到该变量的定义,就会查询location对象中是否有同名的属性。如果发现同名属性,则以location对象属性的值作为变量的值。

一般不建议使用with。

函数

  1. 函数会在执行完return语句之后停止并立即退出,即位于return语句之后的任何代码都不会被执行。

  2. return语句也可以不带任何返回值。并且这种情况下,函数在停止执行后将返回undefined。

  3. 函数参数:在内部是用一个数组来表示的,所以不会在乎函数参数传递的数据类型和个数。(所以可以根据传入的参数个数,来模拟实现重载)

  4. arguments对象只是与数组类似,但并不是Array的实例。

《javascript高级程序设计》第三章学习笔记的更多相关文章

  1. LINUX内核设计与实现第三周读书笔记

    LINUX内核设计与实现第三周读书笔记 第一章 LINUX内核简介 1.1 Unix的历史 1969年的夏天,贝尔实验室的程序员们在一台PDR-7型机上实现了Unix这个全新的操作系统. 1973年, ...

  2. Linux内核设计与实现 第三章

    1. 进程和线程 进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作都是由内核来实现的. Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程,线程不过是一种特殊的 ...

  3. 《Linux内核分析》之第三章读书笔记

    进程管理 进程是处于执行期的程序以及相关的资源的总称,也称作任务.执行线程,简称线程,是在进程中活动的对象. 可以两个或两个以上的进程执行同一个程序 也可以两个或两个以上并存的进程共享许多资源 内核调 ...

  4. 《Linux内核设计与实现》第四周读书笔记——第五章

    <Linux内核设计与实现>第四周读书笔记--第五章 20135301张忻 估算学习时间:共1.5小时 读书:1.0 代码:0 作业:0 博客:0.5 实际学习时间:共2.0小时 读书:1 ...

  5. linux及安全《Linux内核设计与实现》第一章——20135227黄晓妍

    <linux内核设计与实现>第一章 第一章Linux内核简介: 1.3操作系统和内核简介 操作系统:系统包含了操作系统和所有运行在它之上的应用程序.操作系统是指整个在系统中负责完成最基本功 ...

  6. 《Linux内核设计与实现》Chapter 3 读书笔记

    <Linux内核设计与实现>Chapter 3 读书笔记 进程管理是所有操作系统的心脏所在. 一.进程 1.进程就是处于执行期的程序以及它所包含的资源的总称. 2.线程是在进程中活动的对象 ...

  7. 《Linux内核设计与实现》Chapter 1 读书笔记

    <Linux内核设计与实现>Chapter 1 读书笔记 一.Unix的特点 Unix从Multics中产生,是一个强大.健壮和稳定的操作系统. 特点 1.很简洁 2.在Unix系统中,所 ...

  8. 《Linux内核设计与实现》Chapter 2 读书笔记

    <Linux内核设计与实现>Chapter 2 读书笔记 一.获取内核源码 1.使用Git 我们曾经在以前的学习中使用过Git方法 $ git clone git://git.kernel ...

  9. 《Linux内核设计与实现》Chapter 5 读书笔记

    <Linux内核设计与实现>Chapter 5 读书笔记 在现代操作系统中,内核提供了用户进程与内核进行交互的一组接口,这些接口的作用是: 使应用程序受限地访问硬件设备 提供创建新进程与已 ...

  10. 《Linux内核设计与实现》Chapter 18 读书笔记

    <Linux内核设计与实现>Chapter 18 读书笔记 一.准备开始 一个bug 一个藏匿bug的内核版本 知道这个bug最早出现在哪个内核版本中. 相关内核代码的知识和运气 想要成功 ...

随机推荐

  1. nginx+webpy配置

    之前搞app时候学的webpy,一直用的自带webserver,最近研究nginx一段时间,决定二者结合玩一下~ 把搭建的要点总结下,说不定哪天还得用——其实平时手挺懒的... 1 必备模块和背景知识 ...

  2. javaWeb开发中的中文编码问题

    常规解决乱码问题的方法是: a.把所有的jsp页面的charset设置为UTF-8.   b.添加过滤器,在filter内调用request.setCharacterEncoding("ut ...

  3. myeclipse如何设置字体?

    1.首先,将你的Myeclipse打开. 找到上面的菜单“windows”打开“Preferences” 2.然后,在弹出的设置窗口中找到“colors and fonts” 3.将右边的basic打 ...

  4. 第二章 编写与设置Servlet

    2.1 第一个Servlet package cc.openhome; import javax.servlet.ServletException; import javax.servlet.http ...

  5. 登录服务器windows2008出现:远程桌面服务当前正忙,因此无法完成您尝试执行的任务。(或者出现黑屏界面)

    问题:有段时间登录服务器总是提示:远程桌面服务当前正忙,因此无法完成您尝试执行的任务. 在微软找到的原因是:Csrss.exe 进程和某些应用程序 (例如,Microsoft Excel 或 Micr ...

  6. 解决Delphi图形化界面的TEdit、TLable等组件手动拖拽固定大小,但是编译之后显示有差别的情况

    经常遇到这样的情况,在我们使用Delphi的可视化工具进行UI设计的时候,我们拖拽TEdit或者Label组件,并且在可视化界面上设置它们的长.宽 但是当我们编译和运行程序的时候,却发现真正显示出来的 ...

  7. PHP CURL模拟提交数据 攻击N次方

    public function actionCurl(){ $data['DATA']='{"NAME":"c","LEGEND":&quo ...

  8. CozyRSS开发记录5-订阅列表栏里的项

    CozyRSS开发记录5-订阅列表栏里的项 1.订阅列表栏里的项的原型图 这里列表项依然参考傲游的RSS阅读器,以后可能会微调. 2.使用ControlTemplate来定制ListBoxItem 给 ...

  9. IBatis.Net使用总结(二)-- IBatis返回DataTable/DataSet(网上例子的集合)

    IBatis返回DataTable,DataSet ibatis.net QueryForDataTable 完整的为ibatis.net 引入datatable支持要改动很多地方,所以描述的是最小化 ...

  10. Quartz 之Quartz Cron表达式

    说到这个Quartz了,必不可少的就要说到我们的Triggger触发器,相信大家也都知道,我们在之前也说过了,Trigger又有两个子类,也就是两种方式,分别是:SimpleTrigger和CronT ...