笔记(1)——(6)包含
JS变量类型和计算
原型和原型链
闭包和作用域
异步和单线程
日期,随机数,常用API
知识点:
#变量类型
#值类型&引用类型
js中的数据类型有以下几种:
Number Boolean undefined Object Function String Null
基本类型:Number Boolean String undefined null
引用类型:Object Function 数组
基本类型的数据是存放在栈内存中的,而引用类型的数据是存放在堆内存中的
对于a=b这样的赋值操作,基本类型和引用类型的存储方式是有区别的,基本类型是在内存中另外开辟一个空间,
然后将和前面一样的值放进去,a或b其中一个值改变不会影响另一个;而引用类型的赋值是创建一个新的指针,得
到前一个变量所指的存储地址,ab所指的是同一个值,所以一个变了另一个也会变。
#typeof运算符
typeof运算符可返回情况:
typeof只能区分值类型;引用类型中只能区分出函数;
#强制类型转换
会发生类型转换的情况:
(1)字符串拼接
var b = 100 + '10' //'10010'
(2)==运算符
100 == '100' //true
0 == '' //true
null == undefined //true
(3)if语句
var b = 100;
if(b) //true
var c = '';
if(c) //false
(4)逻辑运算
console.log(10 && 0) //0,把10看作true
console.log('' || 'abc') //'abc',把''看作false
console.log(!window.abc) //true,把里面的看作false
两个!!可以用来测试一个变量会被转换成true还是false
总结在if中会被判断成false的值
0
NaN
''
null
undefined
false
#补充:创建对象方法:
(1)使用对象初始化程序创建对象
用法:objectName = {property1:value1, property2:value2,..., propertyN:valueN}
objectName 是新对象的名字,每个 propertyI 是一个标识符(可能是一个名字、数字或字符串直接量),每一个 valueI 是赋予属性 propertyI 值的表达式。objectName 和赋值是可选项。
例:myHonda = {color:"red",wheels:4,engine:{cylinders:4,size:2.2}}
(2)使用构造函数创建对象
用法:用构造函数定义对象类,用 new 运算符创建对象实例。
例:
function car(make, model, year) {
this.make = make
this.model = model
this.year = year
}
mycar = new car("Eagle", "Talon TSi", 1993);
#补充:数组、函数添加属性
数组也可以像对象一样添加属性
如:数组
var arr = [1,2,3];
arr.age = 4; // [1,2,3,age:4]
同样的函数也可以添加属性
如:函数
function fn(){};
fn.age = 4; //fn.age = 4
所以引用类型都可以使用属性。
# == 与 ===的区别
"=="会先把两端的变量试图转换成相同类型,然后再比较;
"==="会直接去比较类型是否相同,如果类型相同则继续比较值是否相同。
一般使用==来判断是否为null的时候被判断的参数已经被定义。
#内置函数和内置对象
内置函数:
function Object()
function Function()
function Array()
内置对象:
Math
JSON
参考:
【1】ljuyi js——引用类型和基本类型 https://www.cnblogs.com/ljuyi/p/6100071.html
【2】JS中大括号的用法 http://tk-zhang.javaeye.com/blog/451040
https://blog.youkuaiyun.com/lbake/article/details/7097505