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

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的学习就到这里。

  

最新文章

  1. PHP“Cannot use object of type stdClass as array” (php在调用json_decode从字符串对象生成json对象时的报错)
  2. [ActionScript 3.0] 安全沙箱的类型sandboxType,判断当前程序是AIR还是web程序
  3. Builder 建造者模式
  4. 怎么在后台修改前台html页面的key、title、description
  5. 【高德地图API】如何打造十月妈咪品牌地图?
  6. Text-鼠标点击事件
  7. SQL的六种约束
  8. PythonStudy——三元表达式 Ternary expression
  9. Android关于API level、buildToolVersion、CompileSdkVersion
  10. 安装bazel(syntaxnet依赖工具)
  11. c# 数组协变
  12. (转) AdversarialNetsPapers
  13. POJ 2352 Stars(树状数组)题解
  14. 太过亲密往往不好——用non-member,non-friend替换member函数
  15. WIN 10系统下,在DOS窗口输入Java或者javac出现乱码的解决方法
  16. Android USB gadget框架学习笔记
  17. sqlserver分区视图中分区列的规则
  18. mysql格式化日期的函数
  19. 如何定位 Node.js 的内存泄漏
  20. BigDecimal进行精确运算demo工具类

热门文章

  1. CodeForces - 123E Maze
  2. 描述怎样通过flask+redis+sqlalchemy等工具,开发restful api
  3. 高性能的序列化与反序列化:kryo的简单使用
  4. UDK游戏打包详解
  5. ngd 查看ng2应用的组件树、路由树
  6. asn编译常见报错
  7. 2-6 Flutter开发环境与Android开发环境设置实操(Windows)
  8. 通过xpath获取对应的整个子节点信息
  9. CQL查Cassandra条目数中的小问题
  10. Go语言调度器之盗取goroutine(17)