数据类型

SJS语言目前共有以下几种数据类型:

  • number : 数值
  • boolean:布尔值
  • string :字符串
  • object:对象
  • function:函数
  • array : 数组
  • date:日期
  • regexp:正则

Number

语法

number 包括两种数值:整数,小数。

  1. let a = 10;
  2. const PI = 3.141592653589793;

属性

  • constructor:返回字符串 "Number"。

方法

  • toString
  • toLocaleString
  • valueOf
  • toFixed
  • toExponential
  • toPrecision

:以上方法的具体使用请参考 ES5 标准。

string

语法

string 有两种写法:

  1. 'hello world';
  2. "hello world";

属性

  • constructor:返回字符串 "String"。
  • length

:除constructor外属性的具体含义请参考 ES5 标准。

方法

  • toString
  • valueOf
  • charAt
  • charCodeAt
  • concat
  • indexOf
  • lastIndexOf
  • localeCompare
  • match
  • replace
  • search
  • slice
  • split
  • substring
  • toLowerCase
  • toLocaleLowerCase
  • toUpperCase
  • toLocaleUpperCase
  • trim

以上方法的具体使用请参考 ES5 标准。

boolean

语法

布尔值只有两个特定的值:true 和 false。

属性

  • constructor:返回字符串 "Boolean"。

方法

  • toString
  • valueOf

以上方法的具体使用请参考 ES5 标准。

object

语法

object 是一种无序的键值对。使用方法如下所示:代码示例

  1. var o = {} //生成一个新的空对象
  2. //生成一个新的非空对象
  3. o = {
  4. 'string': 1, //object 的 key 可以是字符串
  5. const_var: 2, //object 的 key 也可以是符合变量定义规则的标识符
  6. func: {}, //object 的 value 可以是任何类型
  7. };
  8. //对象属性的读操作
  9. console.log(1 === o['string']);
  10. console.log(2 === o.const_var);
  11. //对象属性的写操作
  12. o['string']++;
  13. o['string'] += 10;
  14. o.const_var++;
  15. o.const_var += 10;
  16. //对象属性的读操作
  17. console.log(12 === o['string']);
  18. console.log(13 === o.const_var);

属性

  • constructor:返回字符串 "Object"。

代码示例

  1. console.log("Object" === {k: "1",v: "2"}.constructor)

方法

  • toString:返回字符串 "[object Object]"。

function

语法function 支持以下的定义方式:代码示例

  1. //方法 1
  2. function a (x) {
  3. return x;
  4. }
  5. //方法 2
  6. var b = function (x) {
  7. return x;
  8. }

function 同时也支持以下的语法(匿名函数,闭包等):

  1. var a = function (x) {
  2. return function () { return x;}
  3. }
  4. var b = a(100);
  5. console.log( 100 === b() );

arguments

function 里面可以使用 arguments 关键词。该关键词目前只支持以下的属性:

  • length: 传递给函数的参数个数。
  • [index]: 通过 index 下标可以遍历传递给函数的每个参数。

代码示例

  1. var a = function() {
  2. console.log(3 === arguments.length);
  3. console.log(100 === arguments[0]);
  4. console.log(200 === arguments[1]);
  5. console.log(300 === arguments[2]);
  6. };
  7. a(100, 200, 300);

属性

  • constructor:返回字符串 "Function"。
  • length:返回函数的形参个数。

方法

  • toString:返回字符串 "[function Function]"。

代码示例

  1. var func = function (a, b, c) { }
  2. console.log('Function' === func.constructor);
  3. console.log(3 === func.length);
  4. console.log('[function Function]' === func.toString());

array

语法

array 支持以下的定义方式:

  1. var a = []; //生成一个新的空数组
  2. a = [1, '2', {}, function() {}]; //生成一个新的非空数组,数组元素可以是任何类型

属性

  • constructor:返回字符串 "Array"。
  • length

除constructor外属性的具体含义请参考 ES5 标准。

方法

  • toString
  • concat
  • join
  • pop
  • push
  • reverse
  • shift
  • slice
  • sort
  • splice
  • unshift
  • indexOf
  • lastIndexOf
  • every
  • some
  • forEach
  • map
  • filter
  • reduce
  • reduceRight

以上方法的具体使用请参考 ES5 标准。

date

语法

生成 date 对象需要使用 getDate函数, 返回一个当前时间的对象。

  1. getDate()
  2. getDate(milliseconds)
  3. getDate(datestring)
  4. getDate(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]])

参数

  • milliseconds: 从1970年1月1日00:00:00 UTC开始计算的毫秒数
  • datestring: 日期字符串,其格式为:"month day, year hours:minutes:seconds"

代码示例

  1. var date = getDate(); //返回当前时间对象
  2. date = getDate(1500000000000);
  3. // Fri Jul 14 2017 10:40:00 GMT+0800 (中国标准时间)
  4. date = getDate('2017-7-14');
  5. // Fri Jul 14 2017 00:00:00 GMT+0800 (中国标准时间)
  6. date = getDate(2017, 6, 14, 10, 40, 0, 0);
  7. // Fri Jul 14 2017 10:40:00 GMT+0800 (中国标准时间)

属性

  • constructor:返回字符串 “Date”。

方法

  • toString
  • toDateString
  • toTimeString
  • toLocaleString
  • toLocaleDateString
  • toLocaleTimeString
  • valueOf
  • getTime
  • getFullYear
  • getUTCFullYear
  • getMonth
  • getUTCMonth
  • getDate
  • getUTCDate
  • getDay
  • getUTCDay
  • getHours
  • getUTCHours
  • getMinutes
  • getUTCMinutes
  • getSeconds
  • getUTCSeconds
  • getMilliseconds
  • getUTCMilliseconds
  • getTimezoneOffset
  • setTime
  • setMilliseconds
  • setUTCMilliseconds
  • setSeconds
  • setUTCSeconds
  • setMinutes
  • setUTCMinutes
  • setHours
  • setUTCHours
  • setDate
  • setUTCDate
  • setMonth
  • setUTCMonth
  • setFullYear
  • setUTCFullYear
  • toUTCString
  • toISOString
  • toJSON

以上方法的具体使用请参考 ES5 标准。

regexp

语法

生成 regexp 对象需要使用 getRegExp函数。

  1. getRegExp(pattern[, flags])

参数:

  • pattern: 正则表达式的内容。
  • flags:修饰符。该字段只能包含以下字符:
    • g: global
    • i: ignoreCase
    • m: multiline。

代码示例

  1. var a = getRegExp('x', 'img');
  2. console.log('x' === a.source);
  3. console.log(true === a.global);
  4. console.log(true === a.ignoreCase);
  5. console.log(true === a.multiline);

属性

  • constructor:返回字符串 "RegExp"。
  • source
  • global
  • ignoreCase
  • multiline
  • lastIndex

除constructor外属性的具体含义请参考 ES5 标准。

方法

  • exec
  • test
  • toString

以上方法的具体使用请参考 ES5 标准。

数据类型判断

在SJS中可以使用 constructor 与 typeof 两种方式判断数据类型。

constructor 属性

代码示例在开发者工具中预览效果

  1. var number = 10;
  2. console.log('Number' === number.constructor);
  3. var string = 'str';
  4. console.log('String' === string.constructor);
  5. var boolean = true;
  6. console.log('Boolean' === boolean.constructor);
  7. var object = {};
  8. console.log('Object' === object.constructor);
  9. var func = function(){};
  10. console.log('Function' === func.constructor);
  11. var array = [];
  12. console.log('Array' === array.constructor);
  13. var date = getDate();
  14. console.log('Date' === date.constructor);
  15. var regexp = getRegExp();
  16. console.log('RegExp' === regexp.constructor);

typeof

代码示例在开发者工具中预览效果

  1. var number = 10;
  2. var boolean = true;
  3. var object = {};
  4. var func = function() {};
  5. var array = [];
  6. var date = getDate();
  7. var regexp = getRegExp();
  8. console.log('number' === typeof number);
  9. console.log('boolean' === typeof boolean);
  10. console.log('object' === typeof object);
  11. console.log('function' === typeof func);
  12. console.log('object' === typeof array);
  13. console.log('object' === typeof date);
  14. console.log('object' === typeof regexp);
  15. console.log('undefined' === typeof undefined);
  16. console.log('object' === typeof null);