1.别忽略结尾的 ‘;
’ 会影响压缩后的代码
2.if条件句后即使只跟一条语句 还是建议加上‘{}’
3.用var定义的变量将成定义该变量的作用域中的局部变量。
4.若定义的变量准备用来保存对象,建议将变量初始化为null;
var a = "110";
Number(a);
//转换字符串时比较复杂且不合理 eg Number('');
>>0
parseInt(a);
//推荐使用parseInt(string, radix)//字符串 进制parseInt('') >>NaN
//建议在任何情况都指定第二参数 (10)默认就是10
PS:parseFloat() 只解析十进制
变量声明需要注意变量提升
(function(){
console.log(a)//a is not defined
})
(function(){
var a;
console.log(a)//a is undefined
})
(function(){
var a = 1;
function test(){
console.log(a)//a is undefined此处由于变量提升 var a 会再函数的最前面声明
var a;
}
})
String 字符串
双引号与单引号并无区别 并不存在 单引号解析会比双引号解析快
字符字面量:
console.log("You \t me are singing!")
\t 制表》》Youme are singing!;
\n 换行
\b 空格
\r 回车字符串特点:字符串不可变
null 和 undefined 没有 toString() 方法;
对象:一组数据和功能
(属性\方法)
的集合 对象和通过执行 new 操作符跟要创建的对象类型的名称来创建;
var o = new Object();
//不传递参数时可以省略后面的小括号;
var o = new Object;
// 有效,但不推荐省略圆括号
运算符# 1.一元运算符
var i = 0;
var a = i++;
//>>a = 0 ;
i = 1;
var b = ++i;
//>>b = i = 2;
对非数值 进行 一元 + 操作时 会像 Number() 一样对该值进行转换 效率比较高
var a = "11";
//>>string'11'
var a = +a;
//>>number11
布尔值 会被转换为 0(false)跟1(true)字符串值会先进行解析
先调用它们的 valueOf() 或 toString();
再转换得到的值;
var a = "";
a = +a;
//>> 0执行的操作 Number("") = 0;
2.位操作符
a.按位非:~操作符的负值减1
~2015 》》-2016b.按位与:&
var rs = 25 & 3;
//>>1
25 = 1 1001;
3 = 0 0011;
and = 0 0001;
c.按位或 |
var result = 25 | 3;
//》》 27;
d.按位异或 ^e.左移 <<
二进制:var a = 10;
var b = a<<5;
//>>1000000f.有符号的右移>>(保留符号位 即正负号标记)
与左移作用相反g.无符号右移>>>
3.布尔操作符
a.逻辑非!
b.逻辑与 &&
c.逻辑或 ||
4.乘性操作符
a.乘法 *
b.除法 /
c.求模(取余) %
5.加性操作符
a.如果有一个操作数是NaN 则结果是NaN
b.正无穷+正无穷 = 正无穷
b.负无穷-负无穷 = 负无穷
c.正无穷+负无穷 = NaN
d.若有一个操作符是字符串 则结果是字符串拼接
关系操作符
<><=>======两个操作数 都是字符串比较两个字符串对应的字符编码
a."Brick" < "alphabet"true
b."23" < "3"true;
c.null == undefinedtrue
d.null === undefined false
条件操作符
a?b:c如果a成立 则结果为b 否则为 c;
逗号操作符
var num = (1,2,3,4,5,6)//6
------邪---------恶-------的--------分---------割---------线------
label 语句: 使用label语句可以在代码中添加标签
var num = 0;
outPoint:
for (var i = 0 ;
i < 10 ;
i++){
for (var j = 0 ;
j < 10 ;
j++){
if( i == 5 && j == 5 ){
break outPoint;
//跳出循环 并跳到outPoint 继续执行.
}
num++;
}
}
alert(num);
//55/****************************/var num = 0;
outPoint:
for (var i = 0 ;
i < 10 ;
i++){
for (var j = 0 ;
j < 10 ;
j++){
if( i == 5 && j == 5 ){
break outPoint;
//跳出循环 并跳到outPoint 继续执行.
}
num++;
}
}
alert(num);
//95break,continue + label 可以精准返回到你想要的程序位置
with 语句 :作用将代码的作用域设置到一个特定的对象中 目的 简化多次编写同一对象的工作
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
/********使用with后******************/
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}
PS:严格模式下不允许使用with语句 否则视为语法错误
Reason:大量使用with语句会导致性能下降,同时也给调试代码造成困难 因此不建议使用 with;
【js语句】2016.12.18