时间过得真快,转眼间大学的四年就要过去了。一直在迷茫中的我也需要为将来的生活做打算。从获取实习工作的困难中,我就知道再不抓紧的,我马上就要面临着毕业等于失业的困境。为了摆脱这种状态且得到技术的提升,在努力的找寻下终于找到了一份实习工作。但等真正实习的时候才发现他需要我做的是web前端开发,对于之前只会写些HTML标签的我来说无疑是个大难题。没有基础,只能现学现卖,不会的东西只能问问师傅,还有最重要的度娘。在紧张的工作之余,也拿了些指导的书来看。而写这篇文章的原因就是希望能将自己学到的一些知识,和碰到的问题分享出来。同时也是鞭策自己成长的推力。希望我总结出来不对的地方能够指出来,同时也希望能得到大家的指点!!!
第一部分,是我在看Javascript中总结出来的部分内容:
1.var 声明一个对象后未赋予对象的类型,typeof这个对象返回的是undefined
2.声明的对象所在的位置不同,在函数内 调用函数能访问,在全局
3.js中数字类型支持int,浮点型,十六进制,但有些可能不支持八进制所以最好不要使用0开头的数字直接量
4\反斜线能够把斜线后面的符号的含义改变。例如\n就是换行 'You \'re my sunshine'
5== 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 。而 === 和 !== 只有在相同类型下,才会比较其值。
6.null与undefined在 “==” 下是相等的返回为true,严格的区分需要“===”下 typeof(null)返回的是object,而typeof(undefined)返回undefinedS
7.包装对象:
var s = "test"
s.len = 4
var t = s.len
其中s.len只是临时对象,当创建之后马上被销毁,所以t返回值为undefined
而包装对象是用来区分字符串,数字,布尔的值和对象,当显式的调用String(),Number(),Bool(),时会在"=="条件下判断相等,而在“===”为不相等
8.不可变的原始值(undefined,字符串,数字,布尔值)与对象(数组与方法)
9.对象的比较不同于值的比较,两个单独的对象/数组不相等,基于同一个数组或对象才能比较是否相同(引用对象)
10区别于静态编译语言如c/c++与java,javascript不需要事先声明指定变量的数据类型,而是在运行中才赋予,相似的动态语言有Python,Ruby
11.重复赋值不会报错,但是试图访问一个未声明的变量的值就会报错
12.声明局部变量时必须使用var,不然可能会导致修改全局变量,函数的声明可以循环嵌套,需要注意作用域
13.局部变量声明的过程中有预先编译功能,会把变量的声明放到函数块顶部
14.在全局环境下如果没有严格用var来声明的话这个变量是全局可修改和删除变量
15.正则表达式,一般用来做字符,字符串的处理,匹配
16.数组与对象的初始化类似,初始化中每次元素都需要重新计算,所以取值有可能会不同。对象直接量也可以像数组那样嵌套
17.函数也能够类似于数组与对象初始化
18.访问对象和数组的属性有两种,
expression.identifier
expression [expression]
19.构造函数,初始化新对象的属性,通过new关键字来创建新的对象
20.自增/自减,以++为例
i++先引用i,后返回i=i+1
++i则先返回i=i+1,再引用i
21.js中定义的所有的number都是浮点型,因此余数可以不需要是整数
22.加法的操作,如果不是数字优先考虑字符串的连接,如果不是类字符串的则装换成算数相加
23.= == ===这三个的比较
24.三元运算符 x > 0 ? x : -x 如果 x > 0 判定为真的话,则执行x,否则则执行-x
25delete删除数组的元素时,数组的整体长度不会发生变化。同时delete的使用有很大的限制,一些通过var声明的变量,和function声明的函数以及参数,还有一些重要的内置核心和客户文件不能删除,还有非左值
26.局部变量能够覆盖全局变量的值,并且局部调用时,声明在后面调用在前面的话返回局部变量的值是未定义:
var scope = "globle";
function f() {
console.log(scope); //输出undefined
var scope = "local";//定义局部
console.log(scope);//输出local
}
27.函数声明与函数定义有区别,声明的函数是一个变量,具有在JS里变量的特点,同样不能执行删除操作,但是能够重写函数
28.switch语句的条件与case比较使用“===”,所以比较的时候不会做类型转换。当所有的case都不匹配时,会到default,如果这个也没有则会跳出选择块
29.for循环中三个条件中任意一个都能忽略,但是括号里必须要有俩个";"
30.for/in与普通的for语句完全不同,用来遍历对象的属性成员但不是所有的属性,只能够枚举
for(var p in o)//将属性名字赋值给变量p
console.log(o[p]) 输出每个属性的值
31.通过自定义标签,与break,和continue三者的配合使用,能够处理一些复杂的情形。语句标签和函数命名可以相同
32.continue在while中直接执行下一次循环,而在for循环则要先进行循环条件的判定,所以这两者并非完全的等价
33.异常抛出后会找到最近的异常处理try/catch/finally
try {//通常不会有异常,可以通过throw抛出异常,或者通过调用其他方法间接抛出}
catch {//只有在try抛出异常时才会被执行,可以通过局部变量e来对ERROR对象的或其他值引用,可以基于某种原因处理异常或者忽略该异常}
finally {//不管try语句快是否抛出异常,这里总会被执行,终止try语句块的方法,执行完成 通过break,contiune,return来跳出,抛出异常被捕获,抛出异常未被捕获并向上传播}
34.可以用debugger在调试的时候产生一个断点
35.JS里除了字符串,数字,true,false,null,undifined之外全部都可以当成对象,通过引用而不是值来操作对象。
36.通过代码生成的对象的属性值都是可写(设置该属性的值),可枚举(通过for/in来枚举对象的属性),可配置(删除或修改对象的属性)
37.每个对象还包括三个相关对象特性,对象的原型,对象的类,对象的扩展标记
38.内置对象(由标准定义),宿主对象(由解释器定义),自定义对象(代码运行的过程中产生)。继承属性,自有属性。
39.对象直接量是一个表达式,每次运算都将创建并初始化一个新的对象,每次计算对象直接量的时候也都会计算其他属性的值。所以在循环体内调用将会产生很多新的对象,且对象的属性有可能不同。
40.对象创建,直接定义对象和对象的属性,调用构造函数,原型(inherit在3.0中的作用),Object.creat()。