js与c的比较学习

标准对象

Date

  • Date对象用来表示日期和时间。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var now = new Date();
    now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
    now.getFullYear(); // 2015, 年份
    now.getMonth(); // 5, 月份,注意月份范围是0~11,5表示六月
    now.getDate(); // 24, 表示24号
    now.getDay(); // 3, 表示星期三
    now.getHours(); // 19, 24小时制
    now.getMinutes(); // 49, 分钟
    now.getSeconds(); // 22, 秒
    now.getMilliseconds(); // 875, 毫秒数
    now.getTime(); // 1435146562875, 以number形式表示的时间戳
  • var d = new Date(2015, 5, 19, 20, 15, 30, 123); ——创建一个指定日期和时间的Date对象
    JavaScript的Date对象月份值从0开始,牢记0=1月,1=2月,2=3月,……,11=12月

  • var d = Date.parse(‘2015-06-24T19:49:22.875+08:00’); ——解析一个符合ISO 8601格式的字符串,但它返回的不是Date对象,而是一个时间戳

  • var d = new Date(1435146562875); ——把时间戳转换为Date对象

使用Date.parse()时传入的字符串使用实际月份1-12,转换为Date对象后getMonth()获取的月份值为0-11。

RegExp

  • 在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符

  • ‘-‘是特殊字符,在正则表达式中,要用’\’转义

  • \s匹配空格
  • 要做更精确地匹配,可以用[]表示范围
正则表达式进阶
正则表达式进阶
  • 创建一个正则表达式
    1
    2
    var re1 = /ABC\-001/;
    var re2 = new RegExp('ABC\\-001');

如果使用第二种写法,因为字符串的转义问题,字符串的两个\实际上是一个\

  • re.test(‘….’);  ——RegExp对象的test()方法用于测试给定的字符串是否符合条件
  • ‘a,b;; c d’.split(/[\s\,\;]+/); // [‘a’, ‘b’, ‘c’, ‘d’] ——切分字符串
  • 分组——除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group)

    1
    2
    var re = /^(\d{3})-(\d{3,8})$/;
    re.exec('010-12345'); // ['010-12345', '010', '12345'] ——在RegExp对象上用exec()方法提取出子串来。
  • exec()方法在匹配成功后,会返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串

  • 正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符
  • 加个?就可以让\d+采用非贪婪匹配
  • 全局搜索

    1
    2
    3
    var r1 = /test/g;
    // 等价于:
    var r2 = new RegExp('test', 'g');
  • 全局匹配可以多次执行exec()方法来搜索一个匹配的字符串。当我们指定g标志后,每次运行exec(),正则表达式本身会更新lastIndex属性,表示上次匹配到的最后索引

  • 全局匹配类似搜索,因此不能使用/^…$/,那样只会最多匹配一次
  • 正则表达式还可以指定i标志,表示忽略大小写,m标志,表示执行多行匹配

JSON

JSON中的数据类型

  • number:和JavaScript的number完全一致
  • boolean:就是JavaScript的true或false
  • string:就是JavaScript的string
  • null:就是JavaScript的null
  • array:就是JavaScript的Array表示方式——[]
  • object:就是JavaScript的{ … }表示方式

  • JSON的字符串规定必须用双引号””,Object的键也必须用双引号””

  • var s = JSON.stringify(xiaoming); ——把小明这个对象序列化成JSON格式的字符串
  • JSON可以加上参数,第一个参数是对象,第二个参数用于控制如何筛选对象的键值,还可以传入一个函数
  • JSON.parse(‘[1,2,3]’) ——反序列化,把一个JSON格式的字符串变成一个JavaScript对象