基础知识
js基础三座大山
- 原型 原型链
- 作用域 闭包
- 异步 单线程
知识点
1.变量类型:值类型和引用类型(指针)
- 引用类型包括: 数组、函数和对象;引用类型公共空间,是指针
var a=100;
var b=a;
a=200;
console.log(b) //100
var a={age:20};
var b=a;
b.age=21;
console.log(a.age) //21
2.typeof只能区分值类型的详细类型,对引用类型无能为力,但可以区分出函数来
typeof undefined; //undefined
typeof 'abc'; //string
typeof 123; //number
typeof true; //boolean
typeof {}; //object
typeof []; //object
typeof null; //object
typeof console.log //function
3.强制类型转换(值类型的计算)
① 字符串拼接
② ==运算符
③ if语句
④ 逻辑运算(布尔操作符 逻辑非、逻辑与、逻辑或)
var a=100+10;//110
var b=100+'10'//'10010'
100 =='100'//true
0==''//true
null==undefined//true
var a=true;
if(a){
//...
}
var b=100;
if(b){
//...
}
var c='';
if(c){
//...
}
console.log(10&&0)//0
console.log(''||'abc')//abc
console.log(!window.abc)//true
var a=100;
console.log(!!a)//true
练习题
练习题1、JS中使用typeof能得到的哪些类型?
typeof undefined;//undefined
typeof 'abc';//string
typeof 123;//number
typeof true;//boolean
typeof {};//object
typeof [];//object
typeof null;//object
typeof console.log//function
// typeof只能区分值类型的详细类型,对引用类型无能为力,但可以区分出函数来
练习题2、何时使用===何时使用==?
if(obj.a==null){
//这里相当于obj.a===null||obj.a===undefined,简写形式
//这是jquery源码中推荐的方法,其他的都用===
}
练习题3、JS中有哪些内置函数的数据封装类对象?
//JS作为单纯语言的内置函数
Object
Array
Boolean
Number
String
Function
Date
RegExp
Error
//Global浏览器内置对象
//Math是对象,不是函数
练习题4、JS变量按照存储方式区分为哪些类型,并描述其特点
//分为值类型和引用类型
//值类型
var a=10
var b=a
a=11
console.log(b)//10
//引用类型
var obj1={x:100}
var obj2=obj1
obj1.x=200
console.log(obj2.x)//200
值类型直接存储的是值
引用类型存储的是指向值的指针,这样做是为了节省内存
值类型的值赋值后不会相互干预
引用类型的赋值是变量指针的赋值,不是真的值的拷贝,他们的赋值是相互干预的。
练习题5、如何理解JSON?
//JSON只不过是一个JS对像而已,和MATH一样
JSON.stringfy({a:10,b:20})
JSON.parse('{"a":10,"b":20}')
//注意:JS中为false的为 0 NaN null undefined '' false