xdxxdx
www.xdxxdxxdx.com

1.javascript是区分大小写的。

2.NaN代表不是一个数字,它不等于任何东西,甚至连NaN===NaN都是false,唯一true的是isNaN(NaN)。

3.尽量使用===来代替==进行比较,因为前者会判断数据类型是否一致,否则不比较直接返回false,而后者会自动转换数据类型来比较。

4.null表示空,undifined表示未被定义。

5.不使用var声明就直接使用的变量是全局变量,比如i=10;这个i就是全局变量,不推荐这样使用,因为会造成变量冲突,比如一个页面引用多个js,而多个js都有i变量,都是全局变量,那么将会乱套。可通过'use strict';这句话来强制变量必须加入var。

6.var a=“i‘m ok’”表示i'm ok.如果既包含“”又包含‘’,则可以用转义符。比如var a='i\'m \"ok\"';表示i'm "ok"

7.字符串是不可变的,对字符串某个索引赋值,不会报错但是也不会有任何结果。var s="i am ok";s[1]='x';是没有效果的,s还是i am ok

8.JavaScript把nullundefined0NaN和空字符串''视为false,其他值一概视为true

9.循环对象的方法。

var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    if (o.hasOwnProperty(key)) {
        console.log(key); // 'name', 'age', 'city'
        console.log(o[key]); //'jack',20,'Beijing'
    }
}

10.循环数组的方法

var arr = ['Bart', 'Lisa', 'Adam'];
for (var i in arr){
  console.log("hello,"+arr[i]);
}

 当然最好用 foreach方法。

var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
    // element: 指向当前元素的值
    // index: 指向当前索引
    // array: 指向Array对象本身
    console.log(element + ', index = ' + index);
});

foreach方法对map和set同样有效。

对set:

var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
  // element: 指向当前元素的值
  // sameElement: 也是当前元素
  // set: 指向set对象本身
console.log(element); });

对map

var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
    console.log(value);
});

当然我们不必在回调函数(我调用forEach,forEach在调用我function中的方法)中写上所有的元素,比如我们只对element感兴趣。则完全可以这样写。

var a = ['A', 'B', 'C'];
a.forEach(function (element) {
    console.log(element);
});

 11.函数的两种定义方式

方式一:

function abs(x) {
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
}

方式二:这说明我们可以把函数也理解成一种特殊的变量,事实上他可以进行赋值。比如var func2=func1;

var abs = function (x) {
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
};

12.JavaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array

function foo(x) {
    console.log('x = ' + x); // 10
    for (var i=0; i<arguments.length; i++) {
        console.log('arg ' + i + ' = ' + arguments[i]); // 10, 20, 30
    }
}
foo(10, 20, 30);

 13.我们在函数内部定义变量时,请严格遵守“在函数内部首先申明所有变量”这一规则。最常见的做法是用一个var申明函数内部用到的所有变量:

function foo() {
    var
        x = 1, // x初始化为1
        y = x + 1, // y初始化为2
        z, i; // z和i为undefined
    // 其他语句:
    for (i=0; i<100; i++) {
        ...
    }
}

14.不在任何函数内定义的变量就具有全局作用域。实际上,JavaScript默认有一个全局对象window,全局作用域的变量实际上被绑定到window的一个属性:因此,直接访问全局变量course和访问window.course是完全一样的。同样对方法也是一样,调用foo()和window.foo()是一样,调用alert()和window.alert()也是一样。

15.判断一个值是否为数字,有如下方法。

 --使用isNaN(翻译过来就是 is Not a Number 是否不是一个数字),它的缺点在于会把NULL,空串,空格识别为0,即判断为还是一个数字。

console.log(isNaN(" "));//false
console.log(isNaN(NULL));//false
console,log(isNaN(2));//false
console.log(isNaN("xxx"));//true

封装成如下函数,可以判定是否为数字

function isRealNum(val){
    // isNaN()函数 把空串 空格 以及NUll 按照0来处理 所以先去除
    if(val === "" || val ==null){
        return false;
    }
    if(!isNaN(val)){
        return true;
    }else{
        return false;
    }
}    

--使用正则表达式

如下表达式只要是数字就可以返回true.

function isNumber(val){

    var regPos = /^\d+(\.\d+)?$/; //非负浮点数
    var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
    if(regPos.test(val) || regNeg.test(val)){
        return true;
    }else{
        return false;
    }

}

 14.当js对象的键包含一些特殊符号的时候,比如如下的表单验证。department.departmentName是一个json的键,这时候,我们需要用引号给它包含起来,不然会出现错误。同时,我们要取得这个键的值,需要用[],即:validForm.fields["department.departmentName"]

var validForm={
        message : 'This value is not valid',
        icon : {
            valid : 'glyphicon glyphicon-ok',
            invalid : 'glyphicon glyphicon-remove',
            validating : 'glyphicon glyphicon-refresh'
        },
        fields : {
            'department.departmentName' : {
                message : '表单校验失败',
                validators : {
                    notEmpty : {
                        message : '不能为空'
                    },
                    //远程验证,请求服务器接口后验证
                    remote: {
                                type: 'POST',
                                url: './departmentNameOnly',
                                 validKey: 'valid',
                                dataType:'json',
                                message: '该部门名称已经存在'
                            }
                }
            },
        }
    }

 13.在html的元素中,父子元素的click是可以传递的,比如一个父div,和一个子div,当我们点击子div的时候,是会触发父div的click事件的。所以,为了避免这种情况,我们可以在子div的click事件中添加如下代码:event.stopPropagation();

 15.添加和移除disabled属性的方法

//两种方法设置disabled属性    
$('#area').attr("disabled",true);  
$('#area').attr("disabled","disabled");  
//三种方法移除disabled属性  
$('#area').attr("disabled",false);  
$('#area').removeAttr("disabled");  
$('#area').attr("disabled","");  

 

  1. //两种方法设置disabled属性    
  2. $('#area').attr("disabled",true);  
  3. $('#area').attr("disabled","disabled");  
  4. //三种方法移除disabled属性  
  5. $('#area').attr("disabled",false);  
  6. $('#area').removeAttr("disabled");  
  7. $('#area').attr("disabled",""); 
posted on 2018-03-05 14:25  xdxxdx  阅读(220)  评论(0编辑  收藏  举报