1、js区分大小写,命名开头首字母必须是字母、下划线(_)或美元符号($),其他字符可以是字母、下划线、美元符号或者数字。
2、定义的变量,未初始化,自动取得undefined的值
/*
* 定义的变量,未初始化,自动取得undefined的值
*/
var message; //这个变量声明后默认取得了undefined的值
alter(message) //'undefined'
alter(age) //报错
3、对未定义或者未初始化变量的变量执行typeof操作符会返回undefined的的值
需要注意 typeof(null)的值为'object'(原因在第4条)
/*
* 对未定义或者未初始化变量的变量执行typeof操作符会返回undefined的的值
* 需要注意 typeof(null)的值为'object'
*/
var message;
alter(typeof(message)) //'undefined'
alter(typeof(age)) //'undefined'
4、关于null,null值表示一个空对象指针,所以 typeof(null) 的值为 ‘object’ 的原因,如果定义的变量准备在将来用来保存对象,那么最好将该变量初始化为null而不是其他的值。
typeof(null) == 'object' //true
var obj = null; //obj将来是保存对象,初始化用null
5、if 语句自动执行相应的Boolean转换
/*
*在if语句的条件判断中,number,string,object,Boolean,Undefined都是可以的
是因为if语句自动执行了 Boolean转换 Boolean();
数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 0
Number 任何非零字值 0和NaN
object 任何对象 null
Undefined n/a undefined
*/
var msg = 'hello'
if(msg){
alter('msg is true')
}
6、数值转换
/*
* 以下三个函数可以将非数值转换为数值
* Number()、parsetInt()、parseFloat()
* + 号 可以让纯Number字符串转为Number +'2' === 2
*/
Number('hello world') //NaN
Number("") //0
Number("00011") //11
Number('111sss') //NaN
Number(true) //1
Number('00011.111') //11.111
//由于Number()函数在转换字符串时候比较复杂而且不够合理
parseInt('123sss') //123
parseInt('sss123') //NaN 开头是数字才行
parseInt('123sss123') //123
parseInt(22.5) //22
parseInt('0xA') //10(十六进制)
//parseFloat 类似parseInt
parseFloat(22.5) //22.5
7、isNaN()
/*
*isNaN() 在接收一个值后,会尝试将这个值转化为数值,比如字符串'10'或者Boolean
*不能被转化的值会返回 true
*/
isNaN(10) //false
isNaN('10') //false 可以被转化成10
isNaN('hello') //true
isNaN('10hello') //true
isNaN(true) //false 可以被转化成1
8、toString() 每个数值、布尔值、对象、字符串都有此方法
10.toString(10) //报错 10.toString()”认为“.”是浮点符号,但因小数点后面的字符是非法的,所以报语法错误;
var a = 10;
a.toString() //"10"
a.toString(2) //"1010" 以进制输出
转型函数 String()
var b = true;
var c = null;
var d;
String(b) //"true"
String(c) //"null"
String(d) //"undefined"
9、左右移 << >>
/*
* 左移 << 这个操作符会将数值的所有位向左移动指定的位数,左移动会用0补充,
*/
var a = 2; //二进制编码为10
a << 5; //64 二进制编码为100000
10、for-in 语句,用来枚举对象的属性
//可以给循环命名
out:for(var i in window){
document.write(i + '</br>')
//break 打断循环
//break out 打断命名的循环
}
11、switch语句在比较值时使用的是全等操作符,因此不会发生类型转换(例如,字符串 '1' 不等于数值 1)