一、JavaScript基础类型
JavaScript数据是非常简洁的,它只定义了6种基本数据类型。
1.JavaScript是一种弱类型的语言。所以1=="1"返回的就是true。
2.这里再说个NaN,中文意思是不是一个数字,不能用于算术计算,并且它与自身不相等,例如下面的代码打印出来的就是NaN。
document.write(Number(test2)+ "<br />");NaN === NaN; // false
3.当心隐式的强制转换
3 + true = 4
“+”既重载了数字相加,又重载了字符串连接 1 + 2 + “3” = “33”
二、JavaScript无块级作用域
1.JS不支持块级作用域,作用域不是离其最近的封闭语句或代码块而是他们的函数。
functin test(){ for(var i=0;i<3;i++){ } alert(i); } test();
答案是3,这里在for里面声明var i;其实和在test里var i;的效果是一样的。
三、apply与call
改变函数执行的上下文,这是最基本的用法。两个方法基本区别在于传参不同。
call(obj,arg1,arg2,arg3);
call第一个参数传对象,可以是null。参数以逗号分开进行传值,参数可以是任何类型。
apply(obj,[arg1,arg2,arg3]);
apply第一个参数传对象,参数可以是数组或者arguments 对象。
用来类的继承和回调函数。很多库里面就是大量的引用了这两个方法。
例如用call来模拟数组的slice。
[].slice.call(arguments, 1)
四、Window 对象
Window 对象表示浏览器中打开的窗口。
如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。
在这里可以看到window对象的属性和方法。
部分属性如下:
部分方法如下:
五、Navigator 对象
Navigator 对象包含有关浏览器的信息。点击这里查看详情。
部分属性如下:
部分方法如下:
六、setTimeout与setInterval
setTimeout:在指定的延迟时间之后调用一个函数或者执行一个代码片段
setInterval:周期性地调用一个函数(function)或者执行一段代码。
2、语法
setTimeout:
var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]);
var timeoutID = window.setTimeout(code, delay);
- timeoutID 是该延时操作的数字ID, 此ID随后可以用来作为window.clearTimeout方法的参数
- func 是你想要在delay毫秒之后执行的函数
- code 在第二种语法,是指你想要在delay毫秒之后执行的代码
- delay 是延迟的毫秒数 (一秒等于1000毫秒),函数的调用会在该延迟之后发生.但是实际的延迟时间可能会稍长一点
- 标准浏览器与IE10支持第一种语法中向延迟函数传递额外参数的功能
setInterval
var intervalID = window.setInterval(func, delay[, param1, param2, ...]);
var intervalID = window.setInterval(code, delay);
- intervalID 是此重复操作的唯一辨识符,可以作为参数传给clearInterval()。
- func 是你想要重复调用的函数。
- code 是另一种语法的应用,是指你想要重复执行的一段字符串构成的代码
- delay 是每次延迟的毫秒数 (一秒等于1000毫秒),函数的每次调用会在该延迟之后发生。和setTimeout一样,实际的延迟时间可能会稍长一点。
- 标准浏览器与IE10支持第一种语法中向延迟函数传递额外参数的功能
六、JQuery
jQuery是继prototype之后又一个优秀的Javascript库。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页面保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需要定义id即可。
1.选择器,核心部分,经常会用到,里面有些是封装了的方法
2.属性,在操作html页面的时候,肯定会要调用的。
3.筛选,在根据dom的位置查找标签的时候,需要用到。
4.文档处理,增加修改标签很容易用到
5.CSS,修改页面样式的时候很好用
6.延迟对象,这个很好用,可以让ajax异步操作按顺序来
七、ajax
很时髦的一个应用,异步加载,这里就用JQuery封装了的方法来做事例。具体的参数可以在这里查看。
八、闭包
闭包的官方的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。点击这里可以查看详细的介绍。
通俗点的说法是:
-
从理论角度:所有的函数。因为它们都在创建的时候就将上层上下文的数据保存起来了。哪怕是简单的全局变量也是如此,因为函数中访问全局变量就相当于是在访问自由变量,这个时候使用最外层的作用域。
-
从实践角度:以下函数才算是闭包:
即使创建它的上下文已经销毁,它仍然存在(比如,内部函数从父函数中返回)
在代码中引用了自由变量(自由变量:是指在函数中使用的,但既不是函数参数也不是函数的局部变量的变量)
function testFreedom() { var freedomVar = 1; function inner(param) { echo(pclosure1, param + freedomVar);//将结果打印到pclosure1中 } return inner; }
对于inner函数来说,freedomVar就属于自由变量。
posted on
浙公网安备 33010602011771号