// 1. 原始类型: number, string, boolean,undefined, null
// console.log(100 + 200);
// console.log(typeof 100, typeof 200);
// console.log('hello ' + 'world');
// console.log(typeof('hello ' + 100));
// 为什么要发生类型转换?
// 因为不同的类型的数据,不能直接运算
// 先转换,再运算
// console.log(true, false);
// console.log(typeof true);
// console.log(typeof(true + 1));
// true => 1 隐式转换
// console.log(typeof undefined);
// let a;
// console.log(a);
// console.log(null);
// 一个变量对应一个值,标量
// 2. 引用类型, array, object, function
// 一个变量保存的是一个集合,并非单值,访问时不能直接访问,必须通过这个变量的引用来访问
// 数组
// const arr = [1, 2, 3];
// const arr = [1, 'admin', true];
const arr = [1, 'admin', [1, 2, 3], true];
console.log(arr);
// 访问数据元素,必须通过数组的引用(数组名称arr)来访问(arr是一个访问入口)
// 数组成员 的索引是从0开始
console.log(arr[1]);
console.log(arr[2][1]);
// 引用类型判断不能用typeof
console.log(typeof arr);
console.log(Array.isArray(arr));
// 对象
// 先把对象想象成一个关联数组
let obj = {
id: 1,
username: 'jack',
num: [1, 2, 3],
isOk: true,
'my email': '498668472@qq.com',
};
console.log(arr[1]);
console.log(obj['username']);
// 为了简化,并与数组区别,对象有自己的成员访问符: .
console.log(obj.username);
console.log(obj['my email']);
function getUser(obj) {
return 'id =' + obj.id + ', username =' + obj.username;
}
console.log(getUser(obj));
// 对象是可以将数据与函数封装到一起,做为一个独立的编程单元
// 对象字面量
obj2 = {
id: 1,
username: 'jack',
num: [1, 2, 3],
isOk: true,
'my email': '498668472@qq.com',
// 将一个函数转为对象的方法,封装到对象中
getUser: function() {
// 在对象中,使用变量this来引用对象自身
return 'id =' + this.id + ', username =' + this.username;
},
};
console.log(obj2.getUser());
// 函数
// 函数是对象,也是一个值,可以当成参数传递,也可以当成返回值
console.log(typeof
function() {});
function f1(callback) {
console.log(typeof callback);
console.log(callback());
}
f1(function() {
return 'Hello 猪老师';
});
// 函数当返回值: 闭包
function f2() {
// a是 f2的私有变量
let a = 1;
return function() {
// return (a += 1);
// 而此时,子函数中的a并不是自己的,是父函数的
return a++;
};
}
console.log(f2());
const f = f2();
// console.log(f);
console.log(f());
console.log(f());
console.log(f());
console.log(f());
console.log(f());
console.log(f());
// 函数就是对象,对象就可以添加属性和方法
let f3 = function() {};
f3.myemail = 'admin@php.cn';
console.log(f3.myemail);
f3.getEmail = function() {
console.log(this.myemail);
};
f3.getEmail();