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把null
、undefined
、0
、NaN
和空字符串''
视为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","");
- //两种方法设置disabled属性
- $('#area').attr("disabled",true);
- $('#area').attr("disabled","disabled");
- //三种方法移除disabled属性
- $('#area').attr("disabled",false);
- $('#area').removeAttr("disabled");
- $('#area').attr("disabled","");