js之数据域
1.
浏览器:
找一些东西,var (function) 参数 预先存储 var function
1.
所有的变量在代码正式运行之前,全都赋了一个值,undefined
所有函数,在正式运行之前都是整个函数块。
2.逐行解读代码
表达式可以改变预解析的值(函数不可以)
2.
window.onload = function () {
var a = 1;
function f1() {
var b = 2;
var c = 5;
function f2() {
c = 3;
alert(a + b + c);
}
f2();
};
f1();
alert(c);
window.c
};
3.
一直找到全局变量为止!
1.函数内->2.参数->3.上一个作用域->4.全局
window.xxx 如果没有不会报错,undefined。
function f1() {
alert(c);
c = 5;
代码一行一行执行,c还没有变为全局变量时就已经报错了。
}
4.
(function() {})();匿名函数直接调用。立即执行,不污染全局。
(function(window,undefined) {})(window);
传入window是为了提高速度,在多个函数的嵌套中,不需要去找全局变量
不传入undefined是为了安全,因为ff,IE可以对其赋值,undefined = 4;
直接在内部声明var undefined;
var a = 1;
function test(a) {
alert(a);
};
test(); undefined;
在不传入参数的情况下,默认其实已经传入参数为undefined.
js数组
1.
json形式的对象 key ---- value;
var json = {
'name' : 'Aifald',
'age' : 32
}
2.
数组的几种创建方式:
var arr = new Array();
var arr = new Array(10);
var arr = new Array('10');
var arr = new Array(1,2,3,4);
var arr = [];
删除数组的方式:
arr.length = 0;
arr = []
var string = 'string';
string.length = 1;
alert(string.length);
str = 'paulo';
3.
pop(); 返回最后删除的元素
shift(); 返回最先删除的元素
push(); 返回长度
unshift(); 返回长度
arr.unshift(arr.pop()) 将最后的加在前面
arr.push(arr.shift()) 将最前面的加在最后面
splice(start,length,add); 返回删除的元素(数组)
利用其删除特性可以进行数组去重。(双重循环)
4.排序
默认的情况下,所有的全部按照(编码进行比较)排序。
var arr = [1,2,3,78,8];
arr.sort();
arr.sort(function (a,b) {
return a - b;
});
arr.sort(function (a,b) {
return Math.random() - 0.5;
Math.round(Math.random() * (1 - (-1))) + (-1);
});
console.log(Math.round(Math.random() * (y - x)) + x);
5.
console.log(arr.concat(arr1,arr2));
console.log(arr);
arr.reverse();
var newStr = str.split('').reverse().join('');
push(),pop(),shift(),unshift(),splice(),concat(),reverse(),sort();
js之日期
1.
var myDate = new Date();
myDate.getYear();
myDate.getFullYear();
myDate.getMonth();
myDate.getDate();
myDate.getDay();
myDate.getTime();
myDate.getHours();
myDate.getMinutes();
myDate.getSeconds();
myDate.getMilliseconds();
myDate.toLocaleDateString();
var mytime=myDate.toLocaleTimeString();
myDate.toLocaleString( );
2.
oImg[i].src = 'img/' + str1.charAt(i) + '.jpg';
根据每个字符数字来决定用哪张图片。
3.
创建倒计时
iNow = new Date();
time = Math.floor((iNew - iNow) / 1000);
var str = Math.floor(time/86400) + '天' + Math.floor(time%86400/3600) + '时' + Math.floor(time%86400%3600/60) + '分' + Math.floor(time%60) + '秒';
aInp[1].value = str;
if(time <= 0) {
clearInterval(timer);
alert('0');
}
},1000);
js之滚轮
1.
滚轮事件:ie/chrome :onmousewheel
firefox: DOMMouseScroll 必须用addEventListener
2. 属性(数字):event.wheelDelta 120 -120
event.detail -3 3
3. if(event.wheelDelta) {
b = event.wheelDelta > 0 ? true : false;
} else {
b = event.detail < 0 ? true : false;
}
根据属性值的正负判断是否为滚轮向上或者向下
4. return false 阻止的默认行为是DOM0事件 obj.on事件 = fn;和IE下的attachEvent
addEventListener绑定的事件阻止默认行为用 preventDefault;
cookie
5.一个域名下的cookie个数是有限的,而且不同浏览器的个数不一样。
每一个cookie存放内容的大小有限,每个浏览器也是不一致的。
如果想长时间存储cookie必须设置一个过期的时间。
cookie默认是临时存储的。当关闭浏览器进程的时候自动销毁。
6. IE:必须expires= + 字符串格式的时间
date.toGMTString();
内容最好编码存放:处理一些特殊的字符 \n等。
encodeURI(string);
decodeURI(string);
cookie是以 (; )分号和空格分隔
document.cookie.split('; ')
删除一个cookie只要设置过期的时间就可以给了。
document.cookie = 'username = ' + encodeURI('你好Airfald\npaulo') + ';expires = ' + oDate.toGMTString();