运算符
基本运算符
加 +
减 -
乘 *
除 /
取余 %
自增 ++ eg: 1++ 或 ++1
自减 -- eg: 1-- 或 --1
注:++或--写在前面表示优先级最高,先进行自增或者自减
写在后面表示优先级最低,比赋值还低,先干完别的再赋值
逻辑运算符
与 &&
或 ||
非 !
三元运算符
res = 条件 ? 结果1 : 结果2
条件成立取结果1,失败取结果2
eg:res = 1 < 2 ? "小于" : "大于";
console.log(res); ==> 小于
数据类型
//数字类型 加减乘除 console.log(parseFloat("8/5asdsadqw"),typeof(parseFloat("8/5asdsadqw"))); // 字符串类型 let str = "123abc呵12呵"; // 索引取值 console.log(str[1]); // 索引取值只能正着取才能取到 负着取和超出索引取不会报错,会给你undefined // 切片slice console.log(str.slice(1,3)); // 拆分split console.log(str.split('')); // 拼接 字符串拼接不可以乘法数字字符串乘法直接转换成数字类型相乘 // 迭代取值 for (k in str){ //迭代的是索引 console.log(k) }; for (k of str){ //迭代的是值 console.log(k) }; //替换replace console.log(str.replace('12','qw')); //替换只能替换第一次出现的 //数组 let ls = [5,3,7,2,0]; console.log(ls); //重组join console.log(ls.join()); //默认以空格拼接起来 console.log(ls.join('')); // 排序 ls.sort(); //正序 ls.reverse(); //反序 console.log(ls); //增删改查 ls.splice(0,1,'xx',2); console.log(ls); //splice( 开始的索引 , 你要操作的长度 , 操作后的结果) // 如果你操作长度为0 操作后的结果有值那就是增加 // 如果你操作长度有值,操作后的结果没有值那就是删除 // 如果都有值那就是修改 //查找 console.log(ls[1]) ;//可以根据索引取值 // 对象(字典) let dic = {}; //增 dic.name = 'hesujian'; // 删 delete dic.name; //改 dic.name = 'owen'; dic.name = 'hesujian'; //查 console.log(dic['name']); console.log(dic.name); console.log(dic); //对象和数组的迭代 console.log(ls); for (k in ls){ console.log(ls[k]) }; dic = {'name':'owen','age':28,'gender':'male','k':123}; for (k in dic){ console.log(k); console.log(dic[k]); //这里遍历出来的key只能通过这种方式进行查值 console.log(dic.k); //这种会把k当成dic的属性取查找,而不会替换成遍历出的值(一直去找dic有没有k属性对应的值) };
函数
` 函数的定义 function 函数名(参数列表) { 函数体 return 返回值 } function: 定义函数的关键字 函数名: 使用函数的依据,加括号可以调用,就是一个变量 参数列表: 都是按位置传,没有关键字形参,形参与实参个数不必统一,但一定是按位置传值(你传你的,我传我的) 函数体: 完成主体功能的代码块 return: 返回值,只能返回一个值,不能解压赋值(所以要返回多个需要用数组或对象装起来) `; function fn(a,b) { console.log(a,b); }; fn(); //不传里面的a,b就是未定义undefined fn(1); // a就是1 b就是undefined fn(1,2,3); // a是1 b是2 ` 匿名函数 function () { }; 函数没有名字就是匿名函数 `; //匿名函数的作用 //1.当一个函数的参数需要一个函数地址,就可以把匿名函数直接传进去 function f(ff) { ff(); }; f(function () {}); //2.用变量接收匿名函数 , 这也是函数的第二种声明方式 let a = function () {}; a(); //3.为事件提供方法体 div.onclick = function () { }; //4.匿名函数的自调用,一次性使用 (function () {})()
流程控制
有顺序 分支 循环 (默认是顺序)
随机数
//随机数 Math.random() [0,1) //[0,1) ==> [m,n] //[0,1) * n-m+1 ==> [0,n-m+1) //[0,n-m+1) parseInt() ==> [0,n-m] //[0,n-m] + m ==> [m,n] //公式:parseInt(Math.random * (n-m+1)) + m ==> [m,n]
if条件判断
` if (条件) { } else if (条件) { } else { } `;
while循环
` while循环 while (条件) { 代码块 }; `
for循环
` for 循环 for (赋初值①; 条件②; 自增③) { 代码块④ }; 与python不同的就是for括号里面有三个值,执行过程是①②④③ ②④③ ... ② `
do while 循环
` do while 循环 do{ }while(); 与for循环类似,唯一不同点是,do while先执行后判断 for是先判断后执行 `;
四种声明方式
` let a = 1; 变量,有块级作用域,定义在块级作用域内,外面看不到,不允许重复定义 const b = 2; 常量,有块级作用域,定义在块级作用域内,外面看不到,不允许重复定义 var c = 3; 变量,有局部作用域,定义在局部作用域内,外面看不到,定义在块级作用域时,外面可以看到,允许重复定义 d = 4; 变量,相当于全局定义,在哪都能看到,可以重复定义。 `; ` 块级作用域与局部作用域 块级作用域: {} 就是块级作用域 局部作用域:函数的{}里是局部作用域 `;