js语句

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 制表  》》You   me 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;   //>>  number  11 
布尔值 会被转换为 0(false)跟1(true)  字符串值会先进行解析
先调用它们的 valueOf() 或 toString();  再转换得到的值;
var a = "";
a = +a;  //>> 0  执行的操作 Number("") = 0;

2.位操作符

a.按位非:~  操作符的负值减1
~2015 》》-2016

b.按位与:&
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;  //>>  1000000

f.有符号的右移  >>  (保留符号位 即正负号标记)
与左移作用相反

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 == undefined  true
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);  //95

break,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;

2016.12.18

你可能感兴趣的:(js语句)