第三章:基本概念
JS语句用分号 " ; " 结尾;
在控制语句中使用代码块,哪怕只有一条语句。
函数中用var定义的变量为局部变量,函数退出后就会被销毁,不能在函数外使用。
省略var操作符后就会创建全局变量,可以在函数外部被访问到。
五种简单数据类型:字符串,数字,布尔值,undefined, null。一种复杂数据类型:Object, 本质是无序的名值对组成。使用typeof操作符识别不同的数据类型,圆括号可加可不加:
任何数据类型的值都可以被转化为布尔值,可以调用Boolean()函数。
NaN: 非数值。 任何数值/0 = NaN; isNaN()函数可判断参数是否位“非数值”, 它在接受到一个值后,会尝试将该值转化为数值, 如果不能转化,则返回true, 否则false。
数值转换的三个常用函数:
Number(): 可用于任何数据类型
parseInt(): 专用于把字符串转化成整数
parseFloat:专用于把字符串转化成浮点数
转换为字符串的两个方法:
数值、布尔值、对象和字符串值都有toString()方法,null和undefined没有。所有值都可以使用String()转型函数来转化为字符串。
位操作符:
用来实现一些计算机底层的二进制操作,主要包括按位非(转换成二进制后取其反码),按位与(转换成二进制后,做类似数学中的交集运算),按位或(做类似数学中的并集运算),按位异或,左移, 有符号右移,无符号由移。
布尔操作符:
逻辑非,逻辑与(短路操作,第一个操作数为true时才会执行第二个,否则输出false),逻辑或(也是短路操作符,与逻辑与正相反,第一个操作数为false时才会执行第二个,否则输出true)
乘性操作符:
乘法,除法(/),取余(%)
加性操作符
当有一个操作符是字符串时,两者相加,会将非字符串和字符串拼接起来。
关系操作符:
注意比较两个字符串时,是比较字符的编码位置,大写字母的位置全部小于小写字母的位置。因此在比较单词的时候,应全部转化为大写或者小写字母才能得出正确结果。toLowerCase()
比较两个数字字符串时也有类似问题。任何操作数与NaN相比较,结果都是false。
相等/不相等 和 全等/不全等 一般更推荐使用后者。
break和continue语句:
break表示立即退出当前循环,执行循环以外的语句;continue表示退出当前循环,跳到循环顶部继续执行后续循环。
let num = 0;
for (let i = 1; i<10; i++) {
if(i%5 == 0) {
// break; //4
continue; //8
};
num++;
};
console.log(num);
continue和break还可以与label语句连用,具体实例如下:
var num = 0;
outermost:
for (var i=0;i<10; i++) {
for (var j=0; j<10; j++) {
if(i==5&&j==5) {
// break outermost; //55
// continue outermost; //95
};
num++
};
};
console.log(num);
with语句:
将代码的作用域设置到一个特定的对象中。
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}
switch语句:
表达式等于某个value时,则执行后面的语句statemment。
switch (expression) {
case value: statement
break;
case value: statement
break;
case value: statement
break;
case value: statement
break;
default: statement
}
函数:
函数的参数以数组的形式来表示,在函数体内可以通过arguments对象来访问。
function howManyArgs() {
alert(arguments.length);
}
howManyArgs("string", 45); //2
howManyArgs(); //0
howManyArgs(12); //1
函数不能实现完全的重载。