近来一直在学习js和jquery。刚刚进入前端工作还没有多久,虽然大学里学习的是编程自认为也学的还可以,但前端接触的不多,一直认为前端十分简单。其实不然,特别是工作的时候要自己设计一个完整的项目前端,发现其中还是有许多的问题,需要去摸索的。因为项目的需求,我其实先学的是jquery,但jquery是基于js的所以我差不多是两者一起学习。近来项目已经进行了一段时间,所以想记录一下自己学习的过程,分享一点微薄经验给大家。如果有什么问题,十分乐意大家指出。
(一)、javascript的核心:
1、ECMASCRIPT(定义了其语法、类型、语句、关系等。)
2、文档对象DOM(级别1级、2级、3级,我们一般用2级即可满足开发的需求,这个我也不怎么了解,但十分有兴趣,在之后有一定水准后再来仔细研究)
3、浏览器对象模型BOM
(二)、操作符
1、typeof():返回的类型有undefined、string、number、object、function。
其中注意:typeof(null)返回的是object;typeof([1,2,3,4])返回值也是object;typeof(undefined)返回的是undefined。
所以当你要判断某个对象的话:
if(typeof(value)=='object' && Object.prototype.toString.call(value).toLowerCase()=='[object object]' && !value.length){
if('displayName' in value) return value.displayName; }其中:Object.prototype.toString.call()也是法判断数据类型的方法,有兴趣的可以网上找
2、isNaN():用于检查其参数是否是非数字值,也可用于判断其参数是否是 NaN,因为NaN不能用==或者===来进行判断,所以isNaN()是必须的。
(三)、String
1、转义:\n换行、\t制表、\b空格、\r回车、\f进纸、\\斜杠、\'单引号、\"双引号、\xnn以十六进行表示一个字符。
2、toString():将数值转化成String,但undefined和Null不可转化,可以用String()强制类型转化。
(四)、运算符
1、+加、-减、*乘、/除、%求余
2、自动类型转化:+box(取正)、-box(取负)
3、一元运算符
前置递增(++box),后置递增(box++)。如果没有进行赋值,那么两者都一样。
例:var box = 100; var box = 100;
var age = ++box; //box先累加,再将box赋值给age var age = box++; //先将box赋值给age然后,box自身再进行累加
结果:age=101;box=101 结果:age=100;box=101
4、关系运算符
注意:如果2个数进行比较,其中一个数为数值、另外一个数为字符则会将字符转化为数值进行比较;如果2个都是字符则将各自的第一个字符转化为
ASCII码进行比较。
例:“123”>"22" //返回false
(五)、语句
1、只有一行语句的叫单行语句,用{}包含的语句集合叫复合语句
2、if语句:如果符合if语句的判断,那么执行if后面的一条语句(代表如果没有{}包含的话,只执行后面的一条语句),个人建议不过是不是只执行一句最后都用{}
包含,以便于代码维护。if里面的判断。数值、字符都会转化为true;0或者“”则是false
(六)、switch-case:
1、其中break中途退出,防止穿透。再循环中也可用于跳出整个循环。
2、default 相当于if语句中的else
(七)、do...while和while:do...while先运行再判断,不过是否符合判断都先运行一次。while,先判断再运行。
(八)、for ...in是一种精准的迭代,可用来枚举属性
var box = { for(var x in box){
'name':'张三', console.info(x); //注意枚举的是属性,结果:name、age、height
'age':'26', }
'height':'176'
}
(九)、break和continue:break退出循环,continue退出当前循环。
(十)、whith:将代码作用域设置到一个特定的参数中
with(box){
var n = name; //相当于box.name
}
这一次的总结先到这里,虽然都十分的基础,但是运用熟练的话也可以减少一些代码量的。如果其中有什么问题或者补充的话,是否乐意大家指出。