犀牛书重读笔记(一)

序言

刚刚工作的时候,读了一遍犀牛书和高程,但是对于其中的内容不甚了解,大概的快速过一遍,很多知识知其然不知其所以然。在工作一年之后,重新捡起来在看一遍,实践和理论结合才能获得更好的效果,这次笔记主要是为了再次牢记一些基础知识,加深对于js这种语言的理解。写的并不全,主要是为了自己加深印象。

1、类型,值和变量

在JavaScript中,数据总的会分为两种类型,原始类型与对象类型。

原始类型包括数字、字符串和布尔值,同时,在原始类型中,有两种特殊的类型,null(空)和undefined(未定义)。除了这些原始类型以为的东西,都是对象类型。

对象就是属性的集合,属性就是‘键\值对’。普通的对象是属性的无序集合,但是有一些特殊的对象不是,比如数组。数组是对象类型,但是数组是有顺序的。另一种特殊的对象就是函数,函数可以被执行,但是同样可以进行对象操作。除了以上数组类和函数类意外,JavaScript还提供了三种类分别是,日期(Date)、正则(RegExp)和错误(Error)。

  JavaScript中的数字运算

    除了基本的加减乘除运算外,JavaScript还提供Math对象进行复杂运算。Math对象的属性如下
      Math.pow(3,3)    计算3的三次幂

      Math.round(.6)        四舍五入计算

      Math.ceil(.3)        向上求整

      Math.floor(.3)      向下求整

      Math.abs(-5)       求绝对值

      Math.max(x,y,z)     返回最大值

      Math.min(x,y,z)    返回最小值

      Math.random()      返回一个0到1的伪随机数

      Math.PI            返回圆周率

      Math.E           e:自然对数的底数

      Math.sqrt(3)      3的平方根

      Math.sin(0)

      Math.cos(0)

      Math.log(0)

    当计算超出JavaScript的计算上线时,会发生溢出,并返回无限大(infinity)

    在JavaScript中,所有的实数都是由一个近似的浮点数表示,所以在计算数值的时候,如果有必要的话,需要首先进行处理,然后再赋值。

  JavaScript中的文本

    转义字符 \    ex   ‘you\‘re right,it can\‘t be a quote‘

    JavaScript中的数组操作

      var a = ‘hello,world‘

      a.charAt(0)    返回‘h‘ 返回第0个字符

      a.substring(1,4)   返回ell 返回第2个到第4个字符,与slice不同,两个参数顺讯可以颠倒

      a.slice(1,4)    返回ell 但是与substring不同的是slice可以接受负数

      a.indexOf(‘l‘)    返回2 首次l出现的位置

      a.lastIndexOf(‘l‘)    返回10 最后一次出现l的位置

      a.indexOf(‘l‘,3)    返回3,第三个字符之后出现l的位置

      a.split(‘,‘)    返回数组 以,划分

      a.replace(‘h‘,‘H‘)    返回被替换后的字符串

      在JavaScript中,字符串是不能被改变的,以上操作返回的都是新的字符串

  JavaScript中的布尔值

    在JavaScript中 undefined null 0 -0 NaN ‘‘ 都是false。除了这6个值,其他值都不会被当成false 包括空数组和空对象

  null和undefined

    在JavaScript中  对null进行typeof运算,返回值为object。也就是说null其实是一种特殊的对象,他的含义是非对象,他表示数字、字符串、对象没有值。对于undefined来说,他表示的未定义。对undefined进行typeof操作 返回的是undefined

  JavaScript中包装对象

    JavaScript中的对象是一种复合值:他是属性或命名值得集合,可以通过‘.‘符号来引用属性。当属性值是一个函数的时候,称其为方法。通过obj.m()来调用。对于字符串等非对象,他们也有属性,从根本上看,是在对其进行操作的时候,新创建了一个对象,在操作结束后销毁了那个对象。

  JavaScript中布赫编的原始值和可变的对象引用

    JavaScript中的原始值(undefined,null,布尔值,数字,字符串)都是只读的,所有对其的操作都是返回一个新的值。而对于赋值符号=,很多时候只是多了一个指向,而不是多了一个数组。比如 var a = [1,2,3];var b = a;这是a和b指向的是同一个数组,对a进行操作,b也会改变。

  JavaScript中的转换

    JavaScript中的转换相等

      null==undefined;

      ‘0‘==0;

      0==flase;

      ‘0‘==flase;

    JavaScript中的显示类型转换

      上面的转换时自动的转换,JavaScript中同样提供了主动的转换函数

        Number(‘3‘)  返回3;

        String(false)   返回‘flase‘

        Boolean([])       返回true

        Object(3)          返回New Number(3)

2、表达式

  in运算符

    var point = {x:1,y:2}

    ‘x‘ in point      返回true

  instanceof运算符

    var d = new Date();

    d instanceof Date(); ture 因为d是由Date()创建

    d instanceof Object ;true d是一个对象

  typeof运算符

    typeof a;   返回a的类型

时间: 2024-11-05 17:34:44

犀牛书重读笔记(一)的相关文章

犀牛书读书笔记-01

第一章,概述 这章是综述性质的,作者随意的给出了一些例子. 1. visibility = hidden, display = none. function hide (e, reflow) { if (reflow) { e.target.style.display = "none"; } else { e.target.style.visibility = "hidden"; } } 这段代码展示了两种隐藏节点的方式,之前在项目中接触最多的是display=no

Effective Objective-C 2.0重读笔记---1

上次看这本书的时候匆匆走了一遍,最近不太忙,重温了一遍,把笔记写出来~.. 有兴趣的可以去买一本,感觉这本书还是挺不错的 由于大部分是在坐车的时候用手机写的,所以代码很少,图也很少 1. 尽量使用向前声明,延后引入头文件的时间,这样可以减少编译时间2. 使用arraywithobjects:....如果遇到为空的变量,就会自动终止,后面的变量便会添加不上,切不会报错,会造成数据不一致问题,所以尽量使用字面量语法创建相关对象,减少出错且减少代码量3. 使用字面量创建的对象都是不可变的,如果要获得可

Effective Objective-C 2.0重读笔记---2

1. 很多时候我们需要保证读写数据的安全性,这时候最好不要使用@synchronized同步块,因为同步块中的代码必须单独执行,这有可能会使当前的代码等许多无关的代码执行完毕才能继续执行,降低程序运行效率.此外还有NSLock ,NSRecursiveLock这些锁,但是这些锁也应该少用, 最好的办法就是用GCD队列保证数据的安全性,而且GCD基于XUN内核,提供了很多底层优化 dispatch_queue_t serialQ = dispatch_queue_create("testGCDQu

犀牛书笔记(五)——语句

“使某件事发生”的一个方法是计算带有副作用的表达式.注入赋值和函数调用这些有副作用的表达式,是可以作为单独语句的,这种把表达式当做语句的用法也称做表达式语句(expression statement).类似的还有声明语句(declaration statement),声明语句用来声明新变量或定义新函数. JavaScript程序无非就是一系列可执行语句的集合.默认情况下,JavaScript解释器依照语句的编写顺序依次执行.另一种“使某件事发生”的方法是改变语句的默认执行顺序. 5.1表达式语句

《Git小书》笔记:1 前言

? ? 在图灵社区买了本<Git小书>,以前也买了一本<GitHub入门与实践>,看完了,觉得挺好,可是现在几乎都忘了,怎么感觉杀鸡用牛刀的赶脚,我完全用不上那些功能啊,可能是没有因为没有经历团伙作案的项目吧,git几乎成了文件备份工具了,自然而然地几乎只用到了推送功能.而那些复杂的命令虽然练了不少,但终究因为缺少累积理解也都忘了. Git推送代码,因为都是代码练习片段,没有形成库的形式,加上推送的时候总是纠结commit的写法,所以也渐渐不用了. 最近对C语言有了点感觉,感觉如果

《淘宝技术这十年》重读笔记

序:<淘宝技术这十年>这本书在加入阿里之前就读过了,那时是以一种“仰视”的心态去读这本书,对书中描述的技术十分着迷(虽然不是全懂,但是感觉好厉害的样子).如今再回过头重读这本书,里面每一个技术要点,可能都是如今实际工作中会碰到的问题.于是我抱着重新梳理和整理的心态,再次阅读这部名著. 第0章:光棍节的狂欢 1.<你刚才在淘宝上买了一件东西>:打开域名=>查询DNS(负载均衡)=>找到入口IP=>打开首页(负载均衡LVS)=>多域名加载静态资源(CDN)=&g

《Git小书》笔记:6 分支

还记得在食堂排队吗,假设好多同学喜欢看到认识的同学就喜欢插队,只是他的插队不是直接插入,而站在队外面,然后来了新人看到了,又插到他后面,很快我们就看到食堂窗口那里变成了一颗树了. 好的,我们先来一个人排队: 查看分支: 我们开始插队,创建一个新分支roma: 在新分支上修改文件,然后提交一下,就相当于又插队了一个人: 好的,现在roma分支上我们已经完成了插队,而master分支还只有一个人"init",现在查看一下roma分支上有几个人了: 下面是简化SAH1输出的命令格式,一般情况

Dx9 龙书 chapter1 笔记

第一章笔记:显示:黑色屏幕 主要是初始化的四个步骤 1.创建IDirect3D9接口指针:2个用途: 确定系统中显示设备的技术特征,显示的模式等(是否支持硬件(第2步)):创建代表物理设备的device对象(第四部):后release掉 它是2.3.4步的上层接口. 2.检测硬件是否支持顶点处理,否则用sofeware 3.设置初始参数 , 例如 绘制面的长宽:像素的格式(A8R8G8B8):是否使用多重纹理来抗锯齿:是否全屏模式: 4.创建device对象代表绘制图形的物理设备:

龙书学习笔记(三)

在将第五章每个示例代码过了一遍之后,大致明白了光照这一章的内容,主要分为四点: 一.光照的类型分为三种,并且均通过结构D3DCOLORVALUE或D3DXCOLOR来表示光线的颜色 环境光(Ambient Light)经其它表面反射到达物体表面,并照亮整个场景,通常用做较低代价的粗略模拟. 漫射光(Diffuse Light)沿着特定的方向传播,到达某个表面后将沿着各个方向均匀反射,因此从各个方向观察物体表面亮度均相同. 镜面光(Specular Light)沿着特定的方向传播,到达一表面后将沿