js基础篇(二)

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);           //6
            }
            f2();
        };
        f1();
        alert(c);                           //not defined
        window.c                           //undefined
    };

3.

一直找到全局变量为止!

1.函数内->2.参数->3.上一个作用域->4.全局

window.xxx    如果没有不会报错,undefinedfunction 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];      //默认按照字符串来排序,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); // -1 ~ 1之间
});

console.log(Math.round(Math.random() * (y - x)) + x);      //x到y之间

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();        //获取当前年份(2位) 
    myDate.getFullYear();    //获取完整的年份(4位,1970-????) 
    myDate.getMonth();       //获取当前月份(0-11,0代表1月) 
    myDate.getDate();        //获取当前日(1-31) 
    myDate.getDay();         //获取当前星期X(0-6,0代表星期天) 
    myDate.getTime();        //获取当前时间(从1970.1.1开始的毫秒数) 
    myDate.getHours();       //获取当前小时数(0-23) 
    myDate.getMinutes();     //获取当前分钟数(0-59) 
    myDate.getSeconds();     //获取当前秒数(0-59) 
    myDate.getMilliseconds();    //获取当前毫秒数(0-999) 
    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);

// March 29,2017 12:00:00

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();




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值