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

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. [nodemon] Internal watch failed: watch ENOSPC错误解决办法
  2. Thinkphp源码分析系列(三)– App应用程序类
  3. Ajax实现提交表单时验证码自动验证(原创自Zjmainstay)
  4. lightOJ 1326 Race(第二类Stirling数)
  5. jQuery--checkbox全选/取消全选
  6. tq2440+fedora安装qt4.5
  7. c语言博客作业-指针
  8. JavaScript关于sha1加密
  9. NOIP2018凉凉记
  10. 创建Car类,包含name,price属性,构造器等方法,创建测试类,在main方法中创建Set接口的实现类,添加5个以上的Car对象,遍历集合元素,验证重复元素是否过滤了; 如果没有过滤,实现过滤功能;把每个小车的price降10000元,再遍历,查看price是否已改变
  11. (12)We should aim for perfection — and stop fearing failure
  12. aspnet_regiis.exe -i 报 “此操作系统版本不支持此选项”
  13. HDU 6156 数位dp
  14. 神经网络 之 DNN(深度神经网络) 介绍
  15. vue+node+mongoDB前后端分离个人博客(入门向)
  16. CF刷题-Codeforces Round #481-G. Petya's Exams
  17. LINUX修改、增加IP的方法,一张网卡绑定多个IP/漂移IP【转】
  18. Java 编码规范(转)
  19. java中常用的String方法
  20. 20145240 《Java程序设计》第十周学习总结

热门文章

  1. Oracle 导出HTML
  2. Delphi 服务操作
  3. node.js NPM 使用
  4. Codeforces 734F Anton and School(位运算)
  5. structs常用的Action
  6. OpenStreetMap(OSM) JMap Viewer(Java swing map)
  7. uva10934 Dropping water balloons
  8. 短路与&&和按位与&的区别
  9. C++ STL 一般总结
  10. c++中冒号(:)和双冒号(::)的用法