js读书笔记

基本类型的基本函数总结

1、 Boolean()

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 “”(空字符串)
Number 任何非零数值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined n/a undefined

2、 Number():可以用于任何数据类型

数据类型 返回值
true or false 1和0
数字值 简单传入和返回
null 0
undefined NaN
字符串
对象 a、调用对象valueOf()方法后按上述规则转换;b、若转换结果为NaN,则调用toString()方法后再按上述规则转换

3、parseInt()和parseFloat():专用于字符串

4、 toString():字符串转换函数,null和undefined无此方法

5、 String():字符串转换函数,对null返回“null”,undefined返回“undefined”

  • valueOf()-》toString()-》Number():一元操作符、一元加和减操作符、乘性操作符、减性操作符、有一个操作数是数值,一个操作数是非数值非字符串(对象、布尔值)的加性操作符
  • toString():有一个操作数是字符串,一个操作数是非数值(字符串、对象、布尔值)的加性操作符
  • String():有undefined和null的加性操作符

语句

  1. for-in语句:循环输出的属性名顺序不可预测;先检测null与undefined
  2. label标签,少用
  3. with:将代码的作用域设置到一个特定的对象中,严格模式下不许使用。eg,
    with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}

等价于:

        var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
  1. switch语句中比较值时用的是全等操作符

理解函数参数

  1. 函数体内有arguments对象可以访问参数数组。
  2. arguments的值永远与对应命名参数的值保持同步。arguments与命名参数的内存空间独立。
  3. 没有传递值得命名参数将自动被赋予undefined值。
  4. 由于未规定函数参数的数量和类型,故不可以重载

基本类型和引用类型的值

基本类型值:undefined、null、boolean、number、string。按值访问,可以操作保存在变量中的实际值,在内存中占据固定大小的空间,因此被保存在栈内存中

引用类型值:由多个值构成的对象。保存在堆内存中,按引用访问。

Object类型:

创建Object实例方式:

  1. 试用new操作符后跟Object构造函数:
    var person = new Object();
person.name = "Nicholas";
person.age = 29;
  1. 对象字面量表示法:对象定义的一种简写形式,不会调用Object构造函数
    var person =  {
name : "Nicholas",
age : 29
};

对象属性访问:可使用方括号访问,方便属性为变量,或者属性名中包含空格等字符

    alert(person.name);
alert(person["name"]); var propertyName = "name";
alert(person[propertyName]); person["first name"] = "Nicholas";

Array类型:

有序列表,可保存不同类型值,可以动态调整大小

创建数组基本方式:

  1. 构造函数
    var colors = new Array();
var colors = new Array(20);
var colors = new Array(3);//创建一个包含3项的数组
var names = new Array("Greg");//创建一个包含1项字符串的数组
var colors = Array(3);//可省略new操作符
  1. 数组字面量表示法:不会调用Array构造函数
    var colors = ["red", "blue","green"];
var names =[];
var values =[1,2];
colors[1] = "black";//用方括号读取数组值
colors[3]="white";//当索引超过现有长度时,数组自动增加其长度

循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).

表示“重复”这个含义的词有很多, 比如循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).

循环

算是最基础的概念, 凡是重复执行一段代码, 都可以称之为循环. 大部分的递归, 遍历, 迭代, 都是循环.

递归

定义是,根据一种(几种)基本情况定义的算法,其他复杂情况都可以被逐步还原为基本情况.在编程中的特征就是, 在函数定义内重复调用该函数.

例如斐波那契数列, 定义F(0)=1, F(1)=1, 所有其他情况:F(x)=F(x-1)+F(x-2).所有大于1的整数经过有限次的反推之后都可以转换到两种基本情况. 而在编程中, 算法则是这样的:

int F(x)
{
if(x==0 || x==1)
return 1; //这里是退出递归的条件, 以保证在有限次递归后能够得到结果
return F(x-1)+F(x-2); //转化为更为基本的情况, 重复调用自身进行计算
}

迭代

在数学和编程中有不同的含义. 迭代(数学): 在循环的基础上, 每一次循环, 都比上一次更为接近结果.

例如下面是一个迭代的例子.

int result = 0;
for(int i=0; i<10; i++)
result += i; //每一次循环之后, result都更加接近结果45

有很多数学问题, 都是迭代算法, 如牛顿迭代法(求平方根).

迭代(编程): 按顺序访问一个列表中的每一项, 在很多编程语言中表现为foreach语句:

$arr = [1, 2, 3, 4];
foreach($arr as $i)
echo $i;

遍历:

按一定规则访问一个非线性的结构中的每一项, 强调非线性结构(树, 图). 而迭代一般适用于线性结构(数组, 队列).

结论

  • 循环(loop) - 最基础的概念, 所有重复的行为
  • 递归(recursion) - 在函数内调用自身, 将复杂情况逐步转化成基本情况
  • (数学)迭代(iterate) - 在多次循环中逐步接近结果
  • (编程)迭代(iterate) - 按顺序访问线性结构中的每一项
  • 遍历(traversal) - 按规则访问非线性结构中的每一项

这些概念都表示“重复”的含义, 彼此互相交叉, 在上下文清晰的情况下, 不必做过于细致的区分.

Date类型

创建方法:

  • 使用new操作符和Date构造函数
var someDate = new Date("May 25,2016");//会自动调用函数Date.parse()

其他函数:

  • Date.parse("May 25,2016");
  • Date.UTC(2016,4,25,0,0,0);
  • Date.now() //+ new Date()
  • Date.toLocaleString()
  • Date.toString()
  • Date.valueof()

RegExp类型

创建方法:

  • 字面量方法:
var expression = / pattern / flags;

pattern为正则表达式,每个正则表达式都可带一个或多个flags,用以标明正则表达式的行为,flags的可选值有:g(全局),i(不区分大小写),m(多行模式),eg:

    var pattern1 = /[bc]at/i;
var pattern3 = /.at/gi;
  • 使用构造函数创建
    var pattern2 = new RegExp("[bc]at","i");

Function类型:

函数是对象,函数名是一个指向函数对象的指针,不会与某个函数绑定。

    1. function sum(num1,num2){
return num1 + num2;
}
2. var sum = function(num1,num2){
return num1 + num2;
}; //函数表达式定义法,function关键字后没有函数名,因为可通过变量sum引用,另注意函数末尾有个分号
3. 使用构造函数定义
var sum = new Function ("num1","num2","return num1 + num2");

js读书笔记的更多相关文章

  1. d3.js读书笔记-1

    d3.js入门 d3入门 D3是一个强大的数据可视化工具,它是基于Javascript库的,用于创建数据可视化图形.在生成可视化图形的过程中,需要以下几步: 把数据加载到浏览器的内存空间: 把数据绑定 ...

  2. 了不起的Node.js读书笔记

    原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 第二章 Js概览 基于GoogleV8引擎 Object.keys(o) 数组方法:遍历forEach.过滤filter ...

  3. d3.js读书笔记-2

    比例尺 比例尺基本内容 比例尺是一组把输入域映射为输出范围的函数.任意数据集中的值不可能恰好与图表中的像素尺度一一对应.比例尺就是把这些数据值映射为可视化图形中使用的新值的便捷手段.D3的比例尺就是那 ...

  4. Node.js高级编程读书笔记Outline

    Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程 ...

  5. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3

    技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...

  6. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记2

    技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...

  7. 读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图

    读书笔记 - js高级程序设计 - 第十三章 事件   canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好   有时候即使浏览器支持,操作系统如果缺缺 ...

  8. 读书笔记_MVC__关于通过js构建ORM,实现Model层

    最近一直在学习MVC构建富应用的WEB程序,自己一直对MVC的设计模式理解的不是十分透彻,终于在研读了github上Spine的源码之后,对构建Model层有了一点自己的理解. 本文仅为个人理解,如有 ...

  9. 《javascript权威指南》读书笔记——第二篇

    <javascript权威指南>读书笔记——第二篇 金刚 javascript js javascript权威指南 今天是今年的196天,分享今天的读书笔记. 第2章 词法结构 2.1 字 ...

随机推荐

  1. Hibernate注解----类级别注解以及属性注解详解----图片版本

    这篇文章是我在慕课网上学习Hibernate注解的时候进行手机以及整理的笔记. 今天把它分享给大家,希望对大家有用.可以进行收藏,然后需要的时候进行对照一下即可.这样能起到一个查阅的作用. 本文主要讲 ...

  2. mybatis配置-返回date类型丢失时间

    此博客仅作于平时开发所遇到的问题记录,不做他用,描述可能不好,自己看懂即可~~ resultMap配置返回时间类型时,发现数据库时间是精确到秒的,但是返回给javabean之后丢失时分秒的信息,只有日 ...

  3. 四极耳机接线标准,N版耳机改造为i版耳机

    (本文提到的都是3.5mm的耳机,2.5mm的没做验证) 现在的手机,以及大多数笔记本都开始使用“四极耳机”,也就是耳机上插头上有四个极.为了叙述方便,将耳机插头上的四个极从插头顶端到靠近电线的塑胶部 ...

  4. Release Management 安装 之 集成TFS

    集成TFS时需要在TFS服务器执行 tfssecurity /g+ "Team Foundation Service Accounts" n:ALM\rmtfsint ALLOW ...

  5. 更改计算机名称后 导致 sql server 2008 R2 用windows账户不能附加的错误解决办法

    出错背景:本人想用sql server 2008 R2 附加sql server 2005数据库出现拒绝访问,后查询网站得知,要用windows身份验证方式登录进去附加, 然后我就用windows身份 ...

  6. 【bzoj1010】 HNOI2008—玩具装箱toy

    http://www.lydsy.com/JudgeOnline/problem.php?id=1010 (题目链接) 题意 给定N个物品,可以连续的划分为若干个组,每个组的代价是(物品数-1+每个物 ...

  7. UINavigationController的创建和相关设置---学习笔记四

    导航控制器 一.设置字体大小,背景等. 二.自定义返回按钮. 三.设置手势. 一.导航中也有个appearance属性,通过它可以设置所有导航的颜色. 二.自定义返回按钮. 1.首先需要知道的是,要把 ...

  8. 微信小程序购物商城系统开发系列-目录结构

    上一篇我们简单介绍了一下微信小程序的IDE(微信小程序购物商城系统开发系列-工具篇),相信大家都已经蠢蠢欲试建立一个自己的小程序,去完成一个独立的商城网站. 先别着急我们一步步来,先尝试下写一个自己的 ...

  9. 原创jquery插件treeTable(转)

    由于工作需要,要直观的看到某个业务是由那些子业务引起的异常,所以我需要用树表的方式来展现各个层次的数据. 需求: 1.数据层次分明: 2.数据读取慢.需要动态加载孩子节点: 3.支持默认展开多少层. ...

  10. 学习C++.Primer.Plus 11 使用类

    1.操作符重载 重载操作符的几个限制: a)         重载的至少有一个操作数是用户定义的类型,这将防止用户为标准类型重载操作符. b)         不能违反操作符原有来的句法规则. c)  ...