JS的代码是一行一行执行的,JS中一切皆对象。
变量提升
console.log( a ); //undefined
var a = 10;
console.log( a ); //10
由此可见,a被预处理到了最前面,变量提升只对var命令声明的变量有效,否则就会报错。
JS注释
// 单行注释
/*
* 多行注释
*/
和文档注释
/**
*
* @method 求和
* @param {Number} 是一个数字
* @param {Number} 另一个数字
* @return {Number} 两个数之和
*/
function add(a,b){
return a + b;
};
JS的数据类型
基本类型
-
String
var a = "cjj IS my Best Friend";
String常见方法
console.log( String.fromCharCode(20013,65,97) );
console.log( a.toUpperCase() );
console.log( a.toLowerCase() );
console.log( a.replace('cjj', 'cdd') );
console.log( a.substr(1,3) ); //substr(start, length)
console.log( a.substring(1,3) ); //substring(start,end-1),substring不支持负值
console.log( a.slice(1,3) ); //slice(start,end-1)
console.log( a.indexOf('m') );
console.log( a.lastIndexOf('m') );
-
Number
var b = 100; console.log( 0.1 + 0.2 ); //0.30000000000000004 浮点数不精确
Number类型中,NaN不等于NaN。如何判断NaN:
if(!Number.isNaN){
Number.isNaN = function(n){
return (
typeof n === 'number' && window.isNaN(n)
);
};
};
-
Boolean
console.log( Boolean(0) ); //false
-
Null
var a = null;
-
Undefined
var c; console.log( c );
引用类型
-
Array
var arr = [];
-
Function
function add(){};
-
Object
var obj = {};
JS中数组[] null都是Object类型。
如何判断数据类型
console.log( typeof aaa ); //undefined
console.log( typeof "foo" ); //String
console.log( typeof 123 ); //Number
console.log( typeof true ); //Boolean
console.log( typeof { a : 1 }); //Object
console.log( typeof function(){} ); //Function
console.log( typeof null ); //Object
console.log( typeof [1,2,3] ); //Object
由此可见,typeof 并不能准确判断类型,如何解决呢?使用Object.prototype.toString
网友评论