1.JS中的变量类型
var a = 100; // 值类型不会因为赋值而相互干预
var b = a;
a = 200;
console.log(b); // 100
// 注意点:不仅仅是js对象{} 可以由自己的属性,JS中的数组和函数也都是可以有自己的属性的
var a = {age: 20};
var b = a;
b.age = 21;
console.log(a.age); //21
var arr = [1, 2, 3];
arr.age = 25; // 给数组添加一个属性
console.log(arr); // [1, 2, 3, age: 25]
var func = function(){}
func.age = 'zhangsan'; // 给一个函数添加一个属性
console.log(func.age); // zhangsan
// ===============================================知识点总结============================================================== // 值类型和引用类型的区别? // 1. 值类型:每个变量都会存储各自的值。不会相互影响 // 2. 引用类型:不同变量的指针执行了同一个对象(数组,对象,函数) // ===============================================知识点总结==============================================================
2. typeof 可以检测的数据类型
// 2. typeof的测试(6种类型)[b-f-n-o-s-u]
// 【基本数据类型】:Undefined null bool string number
// 关键点:typeof只能区分值类型,不能区分引用类型
console.log(typeof undefined); // undefined
console.log(typeof 'absdef'); // string
console.log(typeof 123456); // number
console.log(typeof true); // boolean
console.log(typeof {}); // object
console.log(typeof []); // object
console.log(typeof null); // object
console.log(typeof console.log); // Function
// ===============================================知识点总结============================================================== // JS中使用typeof可以得到呢些类型 ? // 1. JS中的基本数据类型:null, undefined, bool, string, number(typeof可以区分除了null以外的四种值类型) // 2. typeof 6种类型:Object({},[],null), Undefined, Boolean, Number, Function, String // 3. typeof可以区分值类型,typeof null = Object // ===============================================知识点总结==============================================================
3.变量计算(强制类型转换)
// 3.1 字符串拼接
var a = 100 + 10 // 110
var b = 100 + '10' // '10010'
// 3.2 == 运算符
100 == '100' // true('100'=='100')
0 == '' // true(false == false)
null == undefined; // true(false == false)
// 知识扩展:何时使用==和===?
var obj = {}
if (obj.a == null){
// 这里的if语句相当于是; if (obj.a === null || obj.a === undefined)
// undefined == null (true) (JQuery中的源码中的推荐方式)【推荐】
}
// 3.3 if 语句
if (true)
console.log('ok');
if (100)
console.log('ok');
if ('')
console.log('error');
// 3.4 逻辑运算
console.log(10 && 0); // 0
console.log('' || 'abc'); // 'abc'
console.log(!window.abc); // true
var a = 100;
console.log(!!a); // 【掌握】:把任意一个变量转化为一个bool类型
// ===============================================知识点总结============================================================== // JS中 === 和 == 的区别? // 1. 区别:== 会进行强制类型转换之后再比较,=== 不会进行强制类型转换的 // 2. 应用场景 // 2.1 (用于判断对象属性是否存在):if (obj == null) ===>>> 等价于if (obj == null || obj == undefined),可以简化代码,其他情形都使用===进行比较 // 2.2 用于判断函数的参数是否存在: function(a, b){ if(a == null) { // ... }} // 2.3 对于函数内部或者是一个对象的参数进行判断只会出现undefined, 而不会报错(慎用) // 3. js中类型转换为false的有哪些(6种):null, undefined, NaN, '', false, 0 // ===============================================知识点总结==============================================================
4. JS中的内置函数和内置对象
内置函数:
Object
Array
Boolean
Number
String
Function
Date
RegExp
Error
内置对象
Math
JSON