5.25学习js笔记
1、JavaScript的基本数据类型有三种:
- (1)数字型(Number型)[如123,45.6(整数型,浮点数型)]
- (2)字符串型(String型)
- [如str123,你好JavaScript 这些
- 字符串是由Unicode字符、数字、标点符号等组成的序列,它是JavaScript用来表示文本的数据类型。程序中的字符串型数据是包含在单引号或双引号中的,由单引号定界的字符串中可以含有双引号,
- 由双引号定界的字符串中也可以含有单引号。]
- (3)布尔型(Boolean型)[只有两个“ture”,“false”]
2、JavaScript特殊数据类型
- (1)空值(null型)
- (2)未定义值(undefined型)
- (3)转义字符
此外,JavaScript中有一种特殊类型的数字常量NaN,即“非数字”。当在程序中由于某种原因发生计算错误后,将产生一个没有意义的数字,此时JavaScript返回的数字值就是NaN。
null与undefined的区别是,null表示一个变量被赋予了一个空值,而undefined则表示该变量尚未被赋值。
转义字符:以反斜杠“\”开头的不可显示的特殊字符通常称为转义字符。通过转义字符可以在字符串中添加不可显示的特殊字符,或者防止引号匹配混乱的问题。
转义字符 | 说明 |
---|---|
\b | 退格 |
\n | 回车换行 |
\t | Tab符号 |
\f | 换页 |
\' | 单引号 |
\" | 双引号 |
\v | 跳格(Tab,水平) |
\r | 换行 |
\\ | 反斜杠 |
\OOO | 八进制整数,范围为000~777 |
\xHH | 十六进制整数,范围为00~FF |
\uhhhh | 十六进制编码的Unicode字符 |
这张表列举了JavaScript常用的转义字符,一般只需要记忆\n、\'、\" 即可;
3、在进行ife学习的过程中,在第二章“JavaScript数据类型及语言基础”中
- 创建一个JavaScript文件,比如
util.js
; - 实践判断各种数据类型的方法,并在
util.js
中实现以下方法// 判断arr是否为一个数组,返回一个bool值
function isArray(arr) {
// your implement
}
// 判断fn是否为一个函数,返回一个bool值
function isFunction(fn) {
// your implement
}
来判断一个变量的数据类型的方法,一般可以用typeof()方法;alert(typeof a) ------------> string
alert(typeof b) ------------> number
alert(typeof c) ------------> object
alert(typeof d) ------------> object
alert(typeof e) ------------> function
alert(typeof f) ------------> object;
其中typeof返回的类型都是字符串形式,需注意,例如:
alert(typeof a == "string") -------------> true
alert(typeof a == String) ---------------> false
另外typeof 可以判断function的类型;在判断除Object类型的对象时比较方便;
但想判断一个变量是否是数组的时候,可以用以下方法:
1.判断已知对象类型的方法: instanceof
alert(c instanceof Array) ---------------> true
alert(d instanceof Date) ---------------> true
alert(e instanceof Function) ------------> true
alert(e instanceof function) ------------> false
注意:instanceof 后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。
如:a instanceof b?alert("true"):alert("false") //注意b值是你想要判断的那种数据类型,不是一个字符串,比如Array(
注意:三元运算符:(?:)如名字表示的三元运算符需要三个操作数。语法是 条件 ? 结果1 : 结果2;. 这里你把条件写在问号(?)的前面后面跟着用冒号(:)分隔的结果1和结果2。满足条件时结果1否则结果2。)
2.根据对象的constructor判断: constructor
alert(c.constructor === Array) ----------> true
alert(d.constructor === Date) -----------> true
alert(e.constructor === Function) -------> true
在W3C定义中的定义:constructor 属性返回对创建此对象的数组函数的引用
就是返回对象相对应的构造函数,然后与给出的参数进行判断;从定义上来说跟instanceof不太一致,但效果都是一样的
3.通用但很繁琐的方法: prototype
alert(Object.prototype.toString.call(a) === ‘[object String]’) -------> true;
alert(Object.prototype.toString.call(b) === ‘[object Number]’) -------> true;
alert(Object.prototype.toString.call(c) === ‘[object Array]’) -------> true;
alert(Object.prototype.toString.call(d) === ‘[object Date]’) -------> true;
alert(Object.prototype.toString.call(e) === ‘[object Function]’) -------> true;
alert(Object.prototype.toString.call(f) === ‘[object Null]’) -------> true;
大小写不能写错,比较麻烦,但胜在通用。
通常情况下用typeof 判断就可以了,遇到预知Object类型的情况可以选用instanceof或constructor方法。
5.26看到新增的:
isArray方法
Array.isArray方法用来判断一个值是否为数组。它可以弥补typeof运算符的不足。
var a = [1, 2, 3];
typeof a // "object"
Array.isArray(a) // true
上面代码表示,typeof
运算符只能显示数组的类型是Object,而Array.isArray方法可以对数组返回true。
4、二维数组
一维数组,我们看成一组盒子,每个盒子只能放一个内容。
一维数组的表示: myarray[ ]
二维数组,我们看成一组盒子,不过每个盒子里还可以放多个盒子。
二维数组的表示: myarray[ ][ ]
注意: 二维数组的两个维度的索引值也是从0开始,两个维度的最后一个索引值为长度-1。
var myarr=new Array(); //先声明一维
for(var i=0;i<2;i++){ //一维长度为2
myarr[i]=new Array(); //再声明二维
for(var j=0;j<3;j++){ //二维长度为3
myarr[i][j]=i+j; // 赋值,每个数组元素的值为i+j
}
}