3.类型、值和变量-JavaScript权威指南笔记

  开始变得有意思起来了,然而第三章还是以基础知识了解的角度阐释相关的概念,并没有深入到结合代码以及要实现的功能讲用法和原理的程度。

1.概论。

  value:程序的运行是对值的操作。

  type:能够表示并操作的值,它们的类型称作数据类型。编程语言的基本特性是能支持多种数据类型。

  variable:变量是某个值的符号名称,通过名称获得对该值的引用。

  JavaScript的数据类型分为:原始类型-primitive type;对象类型-object type。

  JavaScript解释器可以自动对内存进行垃圾回收(garbage collection):程序可以按需创建对象,对象的销毁和内存回收由解释器负责,当不再有任何引用指向某个对象时,解释器会自动回收它所占用的内存资源。这一点在做分页用到out _count这个变量的时候有体会的(变量的生命周期)。

  JavaScript的变量是无类型的(untyped),使用var关键字声明(declare)变量。

2.数字

  JavaScript中所有的数字都用64位浮点型表示(IEEE754标准),而整数实际操作是基于32为的整数。

  出现在JavaScript程序中的数字成为数字直接量。值得注意的是,负数是经过正数的运算得到的。添加的负号是一元取反运算符,负号不是数字直接量的组成。

  八进制直接量以0开头,有些地方可能不支持八进制解析,十六进制以0x开头,十进制直接写就是了不要带0做前缀,浮点型直接量也是直接写。(.2就是0.2)

  数的算术运算发生overflow、underflow、被零除的时候不报错,相应的返回正负无穷大infinity,下溢是结果趋零的情况,直接返正负0,被零除返回正负无穷大,0除0才无意义。NaN表示not-a-number,非数字的意思,也是一个值,和任何值(包括自身)都不相等。

  几个有意思的点:x != x这句话仅在x为NaN的时候为真,所以可以用这句话判断值是否为NaN;负零值=正零值,符号在做除法时体现为±infinity。

  之前说过数用浮点型表示,写成十进制的小数都是近似数,也就会有0.3-0.2 !=0.2-0.1。所以写条件判断等等的时候注意一下舍入误差,当然整数不会有这种问题。

  Math对象和Date()构造函数的用法,有需求的时候自行参考API。

3.文本

  字符串,string,每个字符来自Unicode字符集,每个长16bits,2bytes。字符串的所以从零开始,单个的字符是长度为1的字符串。

  值得注意的是,JavaScript中所有对于字符串的操作基于16位值进行,不针对单个字符。

  字符串直接量,单引号或双引号括起来的字符序列,到这里终于知道直接量是个什么概念了。。。空字符串""包含0个字符,非null。

  长字符串不要换行,ECMAScript3不支持,5的话可以在行末用\连下一行。HTML中也是单双引号都可以==。转义符你懂的,不多说。

  同时,在JavaScript中,字符串出现一次后,它的值是固定不变的,做操作后变化的结果将是新的字符串,原字符串还是原值。

  正则表达式:regular expression。这章只需要知道这么多就好。

4.布尔值

  这里的东西很常规了。那么对于弱类型的JavaScript有一些特别的地方。

  undefined、null、±0、NaN、""(空字符串)可以被转成布尔值的false,其余所有值会被转为true。

  对于假值的区分,需要用到!==或===做显式比较。null == undefined为真,null === undefined为假。

5.null和undefined

  null是它自有类型的唯一成员,是关键字;undefined是预定义的全局变量,它的值就是未定义,只读属性,非关键字。

6.全局对象 global object。

  这里其实跟作用域有点关系。全局对象反正就是可以直接用的东西,JavaScript解释器启动,或者浏览器加载新页面时,将创建一个新的全局对象并给它一组定义的初始属性:全局属性undefined等、全局函数isNaN()等、构造函数Date()等、全局对象Math等。

7.总结

  还是在基本概念阶段,新的东西(只区别于Java和C#的东西)还是有很多的。

  今天对于JS的学习就到这里。

  

时间: 2024-10-18 08:53:40

3.类型、值和变量-JavaScript权威指南笔记的相关文章

JavaScript权威指南笔记——第1部分

# <JavaScript权威指南>笔记--第1部分 说明: 印刷版:2012年4月第1版 2016年9月第17次印刷. 本书的风格和<Effective Java>很类似,推荐一下. 该笔记逆序记录的. ----------------------- ------<end>------ | node的helloworld程序: ```js //! program.js // 通过在命令行输入`node program.js`来运行,然后在浏览器中打开网址`127.0.

1.语言概述-JavaScript权威指南笔记

上周三的时候交给老板目前的项目第一个迭代回顾会的总结.原本是以综述性的表述方式写的,交给他之后表示程序员不要长篇大论.总结要分为优点缺点期望等等块,每块列出条目,简明扼要的表达出来.这里也用这种风格.另外要说的是,可能很多地方是摘抄转述和不精确的个人阶段,开始阶段先这样好了,希望看到自己成长. 1.前端开发工程师必备三种技能:描述网页内容之HTML,描述网页样式之CSS,描述网页行为之JavaScript. HTML:Hyper Text Markup Language.超文本标记语言,据说并不

javascript权威指南——笔记

字符集:Unicode字符集 JS:区分大小写 标识符:指变量.函数.属性名.函数名.函数参数 第一个字符:字母.下划线.$ 其后的字符:字母.下划线.$.数字 默认:驼峰命名 转义字符: \n 换行 \t制表 \b空格 \r回车 \f换页符 \\ \' \" 注释:单行// 多行 /**/ 直接量: number.string.boolean.null./RegExp/img 语句:以分号';'结尾 关键字.保留字: do,while,for,in,continue,break, if,els

javascript权威指南笔记(第8章 函数)

8.1 函数定义: 变量声明提前,但是变量赋值并不会提前 函数声明语句不能出现在循环,条件判断或者try/catch/finally以及with语句中: 8.2 函数调用(函数调用,方法调用,构造函数调用,间接调用(call,apply)) 1.var isStrict = (function() { return !this; }()); 2.this的指向问题(嵌套函数this的指向问题) 可以解决的方法有:var self = this 或者使用 apply //嵌套函数 var o =

javascript权威指南笔记学习

//返回了一个继承自原型对象p的属性的新对象 function inherit(p){ if (p ==null) throw TypeError(); if (Object.create){ return Object.create(p); } var t=typeof p; if (t!=="object"&&t!=="function") throw TypeError(); function f(){}; f.prototype=p; ret

2.词法结构-JavaScript权威指南笔记

今天是第二章.所谓词法结构(lexical structure),就是写代码中最基本的东西,变量命名,注释,语句分隔等,这是抄书抄的... 1.字符集,必须是Unicode,反正Unicode是ASCII的超集,各种语言妥妥支持,克林贡语=.=?当我没说 2.JavaScript是区分大小写的. 这一点给我留下了深刻印象.去年五月份,第一次写JavaScript,document.getElementById()写成了document.getElementByID(),妈蛋整整一个上午硬是get

javascript权威指南笔记

最近每天工作之余看下js的细节部分,时间不是很多,所以看的进度也不会太快,写个博客监督自己每天都看下. 以前不知道的细节或者以前知道但是没注意过的地方都会记录下来,所以适合有一定基础的,不适合零基础新手. ---------------------------------------------------------国庆期间--------------------------------------------------------- js中所有数字都是浮点数,比如5/2不是2,是2.5,0

javascript权威指南笔记(第7章 数组)

1.注意: a[-1.23] = true; // This creates a property named "-1.23" a["1000"] = 0; // This the 1001st element of the array a[1.000] // Array index 1. Same as a[1] 2.delete操作符产生稀疏数组 3.设置数组的长度会自动切断或添加undefined 4.javascript不支持真正的多维数组但是可以用数组的数

javascript权威指南笔记(第6章 对象)

1.对象概述 1.对象常见的用法: create .set .Query .delete .test.enumerate 2.对象的属性特性: 可写.可枚举.可配置 3.每个对象的对象特性: 原型.对象的类.对象的可扩展性 4.对象和属性分类: 内置对象.宿主对象.自定义对象.自由属性.继承属性 2.创建对象 1.对象直接量 2.通过new创建对象 3.原型 4.Object.create() 第一个参数:这个对象的原型 第二个参数:可选.对对象的属性进行进一步描述 var o1 = Objec