目录
前言
JavaScript 是一种弱类型或者说动态语言。使用时不用提前声明变量的类型,因为在程序运行过程中,类型会被自动确定。也可以使用同一个变量保存不同类型的数据。
基本数据类型
基本数据类型存储在栈里。
最新的 ECMAScript 标准定义了 8 种数据类型:
1. Undefined
创建一个变量,但并没有赋值,这个变量的数据类型就是undefined
。
例:
let x;
console.log('x的值是:' + x);
console.log('x的数据类型是:' + typeof x);
输出:
任何变量均可通过设置值为 undefined
进行清空。其类型也将是 undefined
。
例:
let x = 1;
console.log('x的值是:' + x);
console.log('x的数据类型是:' + typeof x);
x = undefined;
console.log('x的值是:' + x);
console.log('x的数据类型是:' + typeof x);
输出:
2. Boolean
布尔值只有两个值:true
或 false
。常用在条件测试中。
3. Number
·JavaScript 中只有一种数字类型,包括整数和浮点数。
·Number数字类型包括三个特殊值:
(1)infinity
,无穷大
(2)-infinity
,无穷小
(3)NaN
,非数值
·要检查值是否大于或小于 +/-Infinity
,你可以使用常量 Number.MAX_VALUE
和 Number.MIN_VALUE
·MAX_VALUE
属性值接近于 1.79E+308
。大于 MAX_VALUE
的值代表 “Infinity
”。
·MIN_VALUE
属性是 JavaScript 里最接近 0
的正值,而不是最小的负值。约为 5e-324
。小于 MIN_VALUE
的值将会转换为 0
。
·isNaN
用来判断一个变量是否为非数字类型,返回值为布尔类型。
例:
let x = 1;
console.log('x是非数值吗?' + isNaN(x));
let y = undefined;
console.log('y是非数值吗?' + isNaN(y));
输出:
4. String
JavaScript 的字符串类型用于表示文本数据,被引号包围。可用单引号或双引号。
JavaScript 字符串是不可更改的。这意味着字符串一旦被创建,就不能被修改。但是,可以基于对原始字符串的操作来创建新的字符串。
字符串方法总结:https://blog.csdn.net/honeymoon_/article/details/119934148?spm=1001.2014.3001.5501
5. BigInt
BigInt
类型是 JavaScript 中的一个基础的数值类型,可以用任意精度表示整数。使用 BigInt
,您可以安全地存储和操作大整数,甚至可以超过数字的安全整数限制。BigInt
是通过在整数末尾附加 n
或调用构造函数来创建的。
BigInt
可以表示任意大的整数。能用于 Math
对象中的方法;不能和任何 Number
实例混合运算,两者必须转换成同一种类型。在两种类型来回转换时要小心,因为 BigInt
变量在转换成 Number
变量时可能会丢失精度。
例:
let x = 123414n;
console.log('x的数据类型是:' + typeof x);
console.log(x);
console.log('x的值是:' + x);
输出:
6. Symbols
符号(Symbols
)是 ECMAScript 第6版新定义的。符号类型是唯一的并且是不可修改的, 并且也可以用来作为 Object
的 key
的值。
注意:每个从Symbol()返回的symbol值都是唯一的。
例:
let x = Symbol();
let y = Symbol('foo');
let z = Symbol('foo'); //这是一个新的symbol,与上面不相等
console.log(x);
console.log(typeof x);
console.log(y === z);
输出:
7. Null
Null
类型只有一个值: null
。值 null 是一个字面量,作为尚未创建的对象,因此null
的数据类型是对象。
Null
与 undefined
的区别是两者值相等,但类型不相等。
例:
console.log(null == undefined);
console.log(null === undefined);
输出:
引用数据类型
引用类型存储在堆里。
8. Object对象
在 JavaScript中,几乎所有的事物都是对象。对象也是一个变量,但对象可以包含多个值(多个变量),每个值以 name:value
对呈现。
一个 JavaScript 对象就是键和值之间的映射。键是一个字符串(或者 Symbol
),值可以是任意类型的值。
对象属性有两种寻址方式:
对象名.属性名
对象名["属性名"];
例:
let object1 = {
id: 1,
name: '第一'
};
console.log(object1);
console.log(typeof object1);
console.log(object1 instanceof Object);
输出:
对象有两个常用方法: Object.keys()
、 Object.values()
-
Object.keys()
方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。
语法:Object.keys(obj)
-
Object.values()
方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for…in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。
语法:Object.values(obj)
例:
let obj = {
name: '小明',
age: '18',
sex: '男'
}
console.log(Object.keys(obj));
console.log(Object.values(obj));
输出:
9. 数组
数组由方括号构成,其中包含用逗号分隔的元素列表。
例:
let nums1 = [1, 2,3 ,0 ,0 ,0];
console.log(typeof nums1);
console.log(nums1 instanceof Array);
输出:
数组方法的总结请点击:https://blog.csdn.net/honeymoon_/article/details/119783631?spm=1001.2014.3001.5502
10. 函数
一般来说,一个函数是可以通过外部代码调用的一个“子程序”(或在递归的情况下由内部函数调用)。像程序本身一样,一个函数由称为函数体的一系列语句组成。值可以传递给一个函数,函数将返回一个值。
在JavaScript中,每个函数其实都是一个Function
对象。
如果一个函数中没有使用return
语句,则它默认返回undefined
。要想返回一个特定的值,则函数必须使用 return
语句来指定一个要返回的值。(使用new
关键字调用一个构造函数除外)。
(1) 函数定义
- 函数声明(函数语句)
function 函数名(形参1,形参2 ...) { 函数体 }
- 函数表达式
不以function
开头的函数语句就是函数表达式定义。
- 命名函数
var myFunction = function namedFunction(){
// statements
}
- 匿名函数
var myFunction = function() {
// statements
}
- 当函数只使用一次时,通常使用立即执行函数IIFE (Immediately Invokable Function Expressions)。
(function() {
函数体
})();
- 箭头函数
(参数1, 参数2) => { 函数体 }
- 零参数需要用
()
表示. 只有一个参数时不需要括号。 - 函数体多条语句需要用大括号括起来,而单个表达式时则不需要。表达式expression也是该函数的隐式返回值。
(2) 检测函数是否存在
可以通过 typeof
操作符检测一个函数是否存在。在下面的例子中,检测window对象是否拥有一个noFunc函数的属性。
if ('function' === typeof window.noFunc) {
//存在
} else {
// 不存在
}