运算符:
- 前置后置自增运算符:
++num 先加一 再返回值 num++ 先返回原值 后自加一
- 比较运算符
18 == '18' (true) 18 === '18' (false)
-
逻辑运算符
逻辑与 && 逻辑或 || 逻辑非 !
_ 短路运算:_
1.逻辑与
语法:表达式1 && 表达式2
如果第一个表达式的值为真,则返回表达式2
如果第一个表达式的值为假,则返回表达式1
例:console.log(123 && 456); // 456
console.log(0 && 456); // 0
console.log(0 && 1 + 2 && 456 * 56789); // 0
2.逻辑或
语法: 表达式1 || 表达式2
如果第一个表达式的值为真,则返回表达式1
如果第一个表达式的值为假,则返回表达式2
例:console.log(123 || 456); //123
console.log(0 || 456); // 456
console.log(123 || 456 || 789); //789
分支结构
1.if语句:
if (条件表达式) {
执行语句
}
if (条件表达式) {
执行语句1
} else {
执行语句2
}
if (条件表达式1) {
语句1
} else if (条件表达式2) {
语句2
} else if (条件表达式3) {
语句3
} else {
语句4
}
2. 三元运算符
条件表达式 ? 表达式1 : 表达式2
var num = 10;
var result = num > 5 ? '是的' : '不是的';
3. switch 语句
switch (表达式) {
case value1:
执行语句1;
break;
case value2:
执行语句2;
break;
...
default:
执行最后的语句;
} //表达式要和value全等
循环
1.for 循环
for ( var i = 1; i <= 100; i++){
console.log('你好吗');
}
2. while循环
van num = 1;
while (num <= 100) {
console.log('你好吗');
num ++;
}
3. do-while循环
var i = 1;
do {
console.log('你好吗');
i++;
} while (i <= 100)
数组
1.创建数组
1.使用new来创建
var arr = new Array();
2.使用字面量来创建
var arr = [];
var arr = [1,2,3,4];
2.数组长度
arr.length()
3.新增数组元素
1.修改数组长度
var arr = ['red', 'green', 'blue'];
arr.length = 5;
console.log(arr); // ['red', 'green', 'blue', undefined, undefined]
2.直接通过索引添加数组元素
var arr = ['red', 'green', 'blue'];
arr[3] = 'pink';
arr[4] = 'hotpink';
console.log(arr); // ['red', 'green', 'blue', 'pink', 'hotpink']
函数
1.声明函数 & 调用函数
//声明函数
function 函数名 (形参1, 形参2,...) {
函数体
}
function sayHi() {
console.log('hi~~');
}
//调用函数
sayHi();
----------------------------------------------------
//声明函数2--函数表达式
var 变量名 = function(){};
var fun = function(){
console.log('我是函数表达式');
}
//调用函数2
fun();
2.函数参数
function getSum(num1,num2) {
console.log(num1 + num2);
}
//如果实参的个数多于形参的个数 会取到形参的个数
get(1,2,3); //会正常输出结果 但3不会被赋给形参
//如果实参的个数小于形参的个数 会取到undefined
get(1); //num1 = 1 num2 = undefined 输出结果为NaN
3. return的返回值
// return只能返回一个值 返回的结果是最后一个值
function fn(num1, num2) {
return num1, num2;
}
fn(1,2); // 2
// return要想返回多个值,可以放数组里面进行返回
function getResult(num1,num2) { //返回两个数的加减乘除结果
return [num1 + num2, num1 - num2, num1 * num2, num1 / num2];
}
// 如果没有return 返回的结果是 undefined
4. arguments的使用
不确定函数里传递多少个参数的时候,可以用arguments来获取。
function fn() {
console.log(arguments);
console.log(arguments.length);
console.log(arguments[2]);
//我们可以按照数组的方式遍历arguments
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
全局变量 局部变量
只记一点:如果在函数内部,没有声明直接赋值的变量也属于全局变量
预解析
js引擎运行js 分为两步:预解析 代码执行
1.预解析:JS引擎会把js里面所有的var 还有 function 提升到当前作用域的最前面
代码执行: 按照代码书写顺序从上往下执行
2. 预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升)
(1)变量提升 就是把所有的变量声明提升到当前作用域的最前面 不提升赋值操作
console.log(num); // 不报错 但输出undefined
var num = 10;
fun(); // 会报错 说函数未定义 相当于执行了代码:var fun;
var fun = function(){ fun();
console.log(22); fun = function() {
} console.log(22);
}
//所以函数表达式 调用 必须卸载函数表达式的下面
(2)函数提升 把所有的函数声明和定义提升到当前作用域的最前面
fn(); //可以执行
function fn() {
console.log(1);
}
对象
1.创建对象
//1.利用对象字面量创建对象 {}
// 属性或方法采用键值对表示
// 多个属性或方法中间用逗号隔开
// 方法冒号后面跟着一个匿名函数
var obj = {
uname: '张三丰',
age:18,
sex: '男',
sayHi: function() {
console.log('Hi~');
}
}
//调用对象的属性: 对象名.属性名 或 对象名['属性名']
console.log(obj.uname);
console.log(obj['uname']);
//调用对象的方法 sayHi 对象名.方法名()
obj.sayHi();
-------------------------------------------------------------------
//2.利用 new Object 创建对象
var obj = new Object();
//利用 赋值 来添加对象和方法
obj.uname = '张三丰';
obj.age = 18;
obj.sex = '男';
obj.sayHi = function() {
console.log('hi~');
}
-------------------------------------------------------------------
//3. 利用构造函数创建对象
//function 构造函数名() {
// this.属性 = 值;
// this.方法 = function() {}
//}
function Star(uname, age, sex) { //构造函数首字母要大写
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function(sang) {
console.log(sang);
}
}
var ldh = new Star('刘德华', 18, '男'); //调用构造函数必须使用new
ldh.sing('冰雨');
2. 遍历对象
//for in 循环
for (var k in obj) {
console.log(k); // k 变量输出 属性名 有方法也可以遍历方法
console.log(obj[k]); // obj[k] 得到的是 属性值
}
3. 内置对象
Math
Date
Array
//1.检测是否为数组
var arr = [];
console.log(arr instanceof Array);
console.log(Array.isArray(arr));
//2.翻转数组
arr.reverse();
//3.数组排序
arr.sort(); //按照字符串排序
arr.sort(function(a,b){
return a - b;//升序
return b - a;//降序
});
String
//替换字符 replace
var = 'andyandy'
str.replace('a','b'); // 'bndyandy' 只替换第一个
// 字符转换为数组 split('分隔符')
var str2 = 'red, pink, blue';
str2.split(','); // ['red', 'pink','blue']
//转换大小写
str.toUpperCase();
str.toLowerCase();