javascript深入浅出——学习笔记
转)
在慕课之前学过JS深入浅出,最近发现很多东西都记不太清楚了,再复习一遍好了,感觉这个课程真的超级棒的,做做笔记,再添加一些学习内容😀随时补充
课程大纲
1.数据类型
2.表达式和运算符
3.语句
4.对象
5.数组
6.函数
7.this
8.闭包和作用域
9.OOP
10.正则表达式
学习资料:
JacaScript权威指南
MDN https://developer.mozilla.org/zh-CN/docs/learn/JavaScript 火狐的MBN
多动手实践+参与讨论
第一章数据类型:
1.六种数据类型
弱类型特性
var num=32;
num="this is string";
32+32 //64
"32"+32 //"3232"
"32"-32 //0
数据类型:原始类型【number,string,bollean,null,undefined】 object对象类型【Function Array Date …】
2.隐式转换
+ -
var x='The answer is '+42; 字符串拼接
var y=42+'is the answerr'; 字符串拼接
"37"-7 //30
"37"+7 //377
巧用+/-规则转换类型
num-0 //转数字
num+'' //转字符串
a==b判断
"1.23"==1.23 //true 先将字符串转为数字,再进行比较
0==false //true
null==undefined //true
nwe Object()==new Object() //false 比较地址 地址不同
[1,2]==[1,2] //false 比较地址 地址不同
JS类型转换的坑 http://www.cnblogs.com/diligenceday/p/4393210.html
null,undefined,"",0,-0,NaN 转换成布尔值是false,剩下的(" ","0")全转化为==》true;
null,"",false," ",[] 转换成数字是==》0;
undefined,"One",一个非数字值的数组:["a"],function(){}转化成数字是==》NaN;
true,一个值为数字的数组:[1],是数字的字符串:"1",转换为数字是==》1
isFinite()函数用于检查其参数是否是无穷大。若不是无穷,则返回true,若为无穷则返回false
其中null和undefined没有构造函数,他们两个转化为对象的时候会报类型错误。
JS把对象转化成原始值
JS如果把对象转化成字符串,会调用对象的toString()方法,如果toString()方法返回的值是一个对象,那么会调用对象的valueOf()方法,把valueOf()的返回值转化成字符串,如果该值还不是原始值就会报错;
对象转化数字的时候会调用valueOf()方法,如果该方法返回值非原始值,那么会调用该对象的toString(),把toString的返回值转化成数字,如果toString()返回值还是非原始值,那么就会报错;
如果是对象类型转换成原始类型,只要把需要转化的对象放到原始类型的构造函数中进行解包,比如:
Number({valueOf:function(){return 1111}}) //===>1111
String({toString:function(){return 1111}}) //===>"1111"
Boolean({}) //===>true
如果你觉得麻烦的话可以通过算术运算符进行快速转换:
var obj={toString:function(){returnn 1111}};
obj+""==>>"1111";
var obj={valueOf:function(){return 1111}};
+obj==>>1111;
JS把原始值转化成对象
要让原始类型转化成对象类型要将原始类型放到对象类型的构造函数中,需要让构造函数包装;
console.log(typeof ture); //==>>boolean
console.log(typeof new Boolean(true)) //==》object
原始类型和对象类型