JavaScript 数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(表示独一无二的值)。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
- NaN 的数据类型是 number
- 数组(Array)的数据类型是 object
- 日期(Date)的数据类型为 object
- null 的数据类型是 object
- 未定义变量的数据类型为 undefined
- 通常使用字符创建字符串:var firstName = "John",也可以使用 new 关键字将字符串定义为一个对象: var firstName = new String("John"),但一般不推荐(拖慢执行速度,并可能产生其他副作用)。可以用内置属性 .length 来计算字符串的长度,转义字符 (\) 可以用于转义撇号,换行,引号,等其他特殊字符。
代码 | 输出 |
---|---|
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
\n | 换行 |
\r | 回车 |
\t | tab(制表符) |
\b | 退格符 |
\f | 换页符 |
属性 | 描述 |
---|---|
constructor | 返回创建字符串属性的函数 |
length | 返回字符串的长度 |
prototype | 允许您向对象添加属性和方法 |
方法 | 描述 |
---|---|
charAt() | 返回指定索引位置的字符 |
charCodeAt() | 返回指定索引位置字符的 Unicode 值 |
concat() | 连接两个或多个字符串,返回连接后的字符串 |
fromCharCode() | 将 Unicode 转换为字符串 |
indexOf() | 返回字符串中检索指定字符第一次出现的位置 |
lastIndexOf() | 返回字符串中检索指定字符最后一次出现的位置 |
localeCompare() | 用本地特定的顺序来比较两个字符串 |
match() | 找到一个或多个正则表达式的匹配 |
replace() | 替换与正则表达式匹配的子串 |
search() | 检索与正则表达式相匹配的值 |
slice() | 提取字符串的片断,并在新的字符串中返回被提取的部分 |
split() | 把字符串分割为子字符串数组 |
substr() | 从起始索引号提取字符串中指定数目的字符 |
substring() | 提取字符串中两个指定的索引号之间的字符 |
toLocaleLowerCase() | 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射 |
toLocaleUpperCase() | 根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射 |
toLowerCase() | 把字符串转换为小写 |
toString() | 返回字符串对象值 |
toUpperCase() | 把字符串转换为大写 |
trim() | 移除字符串首尾空白 |
valueOf() | 返回某个字符串对象的原始值 |
- Undefined 表示变量不含有值
- 变量的值设置为 null 来清空变量,null是一个空对象
- null 和 undefined 的值相等,但类型不等
当您声明新变量时,可以使用关键词 "new" 来声明其类型:
var carname=new String; var x= new Number;
- 对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔 ,在 JavaScript中,几乎所有的事物都是对象。JavaScript 对象是变量的容器,容器中的变量有值。定义 JavaScript 对象可以跨越多行,空格跟换行不是必须的
1. 对象键值对的写法类似于:Python 中的字典和C 语言中的哈希表,通过两种方式访问对象属性——person.lastName(或person["lastName"];)
2. 对象的方法定义了一个函数,并作为对象的属性存储。访问 person 对象的 fullName方法属性时,不加括号输出函数表达式,加括号(调用)输出函数执行结果。
3. 创建对象的方法:
methodName : function() { code lines }复制代码
- 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。语法如下:function functionname ( ){ // 执行代码}
1. 关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数
2. 变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推。函数参数只在函数内起作用,是局部变量。
3. 通过使用 return 语句,函数会停止执行,并返回指定的值
typeof 操作符来检测变量的数据类型
类型转换:
- 函数 String()和方法toString() 将数字转换为字符串
方法 | 描述 |
---|---|
toExponential() | 把对象的值转换为指数计数法。 |
toFixed() | 把数字转换为字符串,结果的小数点后有指定位数的数字。 |
toPrecision() | 把数字格式化为指定的长度。 |
- 函数String()和 方法toString() 可以将布尔值转换为字符串。
- Date()返回字符串、函数String() 和方法toString() 可以将日期对象转换为字符串。方法描述(返回的都是字符串)getDate()从 Date 对象返回一个月中的某一天 (1 ~ 31)。getDay()从 Date 对象返回一周中的某一天 (0 ~ 6)。getFullYear()从 Date 对象以四位数字返回年份。getHours()返回 Date 对象的小时 (0 ~ 23)。getMilliseconds()返回 Date 对象的毫秒(0 ~ 999)。getMinutes()返回 Date 对象的分钟 (0 ~ 59)。getMonth()从 Date 对象返回月份 (0 ~ 11)。getSeconds()返回 Date 对象的秒数 (0 ~ 59)。getTime()返回 1970 年 1 月 1 日至今的毫秒数。
- 函数Number() 可以将字符串转换为数字。数字(如 "3.14") 转换为数字 (如 3.14).空字符串转换为 0。其他的字符串会转换为 NaN (不是个数字)。
方法 描述 parseFloat() 解析一个字符串,并返回一个浮点数。 parseInt() 解析一个字符串,并返回一个整数。 - Operator + 可用于将变量转换为数字,如果变量不能转换,它仍然会是一个数字,但值为 NaN (不是一个数字)。
- 函数Number() 可将布尔值转换为数字
函数Number() 和日期方法 getTime()可将日期转换为数字。
自动转换类型:当 JavaScript 尝试操作一个 "错误" 的数据类型时,会自动转换为 "正确" 的数据类型。当你尝试输出一个对象或一个变量时 JavaScript 会自动调用变量的 toString() 方法.
下表展示了使用不同的数值转换为数字(Number), 字符串(String), 布尔值(Boolean):
原始值 | 转换为数字 | 转换为字符串 | 转换为布尔值 | |
---|---|---|---|---|
false | 0 | "false" | false | |
true | 1 | "true" | true | |
0 | 0 | "0" | false | |
1 | 1 | "1" | true | |
"0" | 0 | "0" | true | |
"000" | 0 | "000" | true | |
"1" | 1 | "1" | true | |
NaN | NaN | "NaN" | false | |
Infinity | Infinity | "Infinity" | true | |
-Infinity | -Infinity | "-Infinity" | true | |
"" | 0 | "" | false | |
"20" | 20 | "20" | true | |
"Runoob" | NaN | "Runoob" | true | |
[ ] | 0 | "" | true | |
[20] | 20 | "20" | true | |
[10,20] | NaN | "10,20" | true | |
["Runoob"] | NaN | "Runoob" | true | |
["Runoob","Google"] | NaN | "Runoob,Google" | true | |
function(){} | NaN | "function(){}" | true | |
{ } | NaN | "[object Object]" | true | |
null | 0 | "null" | false | |
undefined | NaN | "undefined" | false |