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. javaWeb项目部署到阿里云服务器步骤

    记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以 ...

  2. Nginx与Apache的比较

    Nginx与Apache的比较 Nginx相对于Apache的优点 轻量级.同样起web服务,比apache占用更少的资源和内存 抗并发.nginx处理请求是异步非阻塞,而apache则是阻塞型.在高 ...

  3. Linux-iptables初识

    Linux-iptables初识 了解 iptables是与Linux内核集成的IP信息包过滤系统.如果Linux系统连接到因特网或LAN.服务器或连接LAN和因特网的代理服务器,则该系统有利于在Li ...

  4. 面向切面编程AOP

    本文的主要内容(AOP): 1.AOP面向切面编程的相关概念(思想.原理.相关术语) 2.AOP编程底层实现机制(动态代理机制:JDK代理.Cglib代理) 3.Spring的传统AOP编程的案例(计 ...

  5. 基于Struts2CRUD的质量属性

    基于struts2框架开发的<学生管理系统>的质量属性 我们经常重新设计系统,可能不是因为该系统在功能上有缺陷,而是由于:系统运行速度太慢.系统容易受到外界攻击.用另外的一句话说:我们修改 ...

  6. Android Telephony —— 手机信号实时变化源码分析过程记录

    源码版本:4.4 跳过InCallActivity等UI实现.先看service以及底层. 1, 在frameworks/opt下面会发现如下文件列表: ./telephony/src/java/co ...

  7. Jetty使用教程(四:21-22)—Jetty开发指南

    二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...

  8. Logging vs NoLogging

    You Asked My Prod environments is like this. Three Node RAC, Active Data guard enabled. There is a p ...

  9. 安卓更新sdk的代理

     mirrors.neusoft.edu.cn80    

  10. Python学习笔记(五)——list和tuple

    一.list 1.定义: list是一种有序的集合,可以随时添加和删除其中的元素 2.声明方法: subjects=['Math','English', 'Chinese'] 3.一些api (1)获 ...