操作符
算术运算
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <script> /* 算数运算符(基础数字运算) + - * / %(求余数) 当不是数字之间的运算的时候 +号两边一旦有字符串(引号引起来的一坨),那么+号就不再是数学运算了,而是拼接,最终结果是字符串 ***** -/*% 尽量将字符串转换成数字(隐式类型转换) NaN : Not a Number number */ var a = "5"; var b = "2"; console.log(a-b);//3 </script> </body> </html>
赋值运算符
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <div id="box"> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> </div> <script> /* 赋值运算符 += -= *= /= %= ++ -- 两个都存在隐式类型转换,会全部转换为数字 ++x x++ */ var oBox = document.getElementById("box"); oBox.innerHTML += "999"; //var x = 4; //var y = ++x; // x = x + 1; y = x; //console.log(x);//5 //console.log(y);//5 var x = 6; var y = x++;// y = x ; x = x + 1; console.log(x); console.log(y); </script> </body> </html>
比较运算符
逻辑运算符
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <script> /* 针对布尔值 true false && 与 两边都为真,结果才为真,其他为假 || 或 两边都为假,结果才为假,其他都是真 ! 非 取反,真变假,假变真 当逻辑运算符,两边不一定是布尔值的时候 && 遇到假就停,但是不会进行类型转换 || 遇到真就停,但是不会进行类型转换 ! 隐式类型转换,将后面的数据先转换为布尔值再取反 */ var a = true && false && true; // alert(a); var b = false || false || true; // alert(b); var c = 1 && true && 6 && 1; // alert(c); var d = false || false || 0; // alert(d); var q = !"5"; alert(q); </script> </body> </html>
流程控制
if else流程控制
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <script> /* if ==> 布尔值 判断符 > < >= <= == != !== === == 只判断值是否一样 "5"==5 === 不仅仅判断值,还判断类型是否一样 "5" === 5 当if的条件 运算完后不是布尔值的时候 会被强制性的转换为布尔值 哪些值,在转换为布尔值的时候为false 0 number false boolean "" string null object/null undefined undefined NaN number NaN :Not a Number number类型 一般在非法运算的时候才会 出现NaN isNaN(参数) 非常讨厌数字 首先尽量把参数转换成数字,然后 当参数是 数字,返回 false 当参数不是数字,返回 true 在if里面,能用布尔值做条件判断的时候,不要用其他的来代替,因为强制数据类型的转换需要耗费时间 在两个值比较的时候,能用三等判断的时候,就用三等判断 */ // alert(5 === "5"); /*if(" "){ alert("true");//条件为真的时候执行 }else{ alert("false");//条件为假的时候执行 }*/ //当真语句只有一行的时候,可以去掉大括号,还可以直接写在条件的后面 /*if(9>8){ alert("true"); } if(6>4)alert("zhen");*/ //真语句一行,假语句一行 三目运算 //9>20?alert("zhen"):alert("jia");//条件?真语句:假语句; //当三目的真假语句都是给同一个变量赋值的时候,可以更近一步简写 // a=9>20?9:20; // alert(a); // var a; // if(9>20){ // a = 9; // }else{ // a = 20; // } // alert(a); var x = 10; if(x > 20){ alert("x>20"); }else if(x > 15){ alert("x>15") }else if(x>10){ alert("x>10") }else{ } </script> </body> </html>
switch case default流程控制
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <script> /*var name = "wjh"; if(name === "xiaopo"){ alert(name + "真阔爱"); }else if( name === "wjh"){ alert(name + "好帅"); }else{ alert(name+"你是谁"); }*/ //全等判断 break 来阻止代码自动地向下一个 case 运行 var name = "wmk"; switch(name){ case "xiaopo": alert(name + "真阔爱"); break; case "wmk": alert(name + "好帅"); break; default: alert(name+"你是谁"); break; } </script> </body> </html>
循环
for
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <script> // for(var i = 0; i < 10 ; i ++){ // console.log(i); // } // for(var i = 0 ; i < 5 ; i ++ ){ // for(var j = 0 ; j < 3 ; j ++){ // console.log(i+ ";" + j); // } // } for(var i = 0 ; i < 10 ; i ++ ){ if(i === 5){ //break;// 0 1 2 3 4中断循环,终止循环,结束循环,未执行的代码不执行 continue;//跳出本次循环 012346789 } console.log(i); } </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } ul li{ list-style: none; 50px; height: 50px; background: yellowgreen; border-radius: 50%; margin: 25px; line-height: 50px; text-align: center; } </style> </head> <body> <ul id="box"> <li>00</li> <li>11</li> <li>22</li> <li>33</li> <li>44</li> </ul> <script> var aLi = document.getElementsByTagName("li"); // console.log(aLi.length); /*aLi[0].onclick = function () { alert(0); }; aLi[1].onclick = function () { alert(1); }; aLi[2].onclick = function () { alert(2); }; aLi[3].onclick = function () { alert(3); };*/ for(var i = 0 , len = aLi.length ; i < len ; i++ ){ aLi[i].index = i;//index 自定义变量 a b c d //aLi[0].index = 0; //aLi[1].index = 1; //aLi[2].index = 2; //aLi[3].index = 3; aLi[i].onclick = function () { alert(this.index); } /*aLi[i].onclick = function () { alert(i);//是循环结束的i }*/ /*aLi[0].onclick = function () { alert(i); } aLi[1].onclick = function () { alert(i); } aLi[2].onclick = function () { alert(i); } aLi[3].onclick = function () { alert(i); } */ } </script> </body> </html>
补充:let
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } ul li{ list-style: none; 50px; height: 50px; background: yellowgreen; border-radius: 50%; margin: 25px; line-height: 50px; text-align: center; } </style> </head> <body> <ul id="box"> <li>00</li> <li>11</li> <li>22</li> <li>33</li> <li>44</li> </ul> <script> var aLi = document.getElementsByTagName("li"); for(let i = 0 ,len = aLi.length ; i < len ; i ++ ){ aLi[i].onclick = function () { alert(i); } } // var a = 5; // var a = 6; // alert(a); //let 不能重复声明 //块级作用域 // let a = 5; // let a = 6; // alert(a); if(true){ let a = 12; } alert(a); </script> </body> </html>
while do...while
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <script> /*var i = 0; for(; i < 4 ; ){ console.log(i); i++; }*/ var i = 100; // while(i<10){ // console.log(i); // i ++; // } do{//至少执行一次 console.log(i); }while(i<10); </script> </body> </html>
字符串方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <script> /* string 字符串 索引、下标、偏移量——从0开始 str[index];——通过索引取字符串 str.length;——获取长度 空格也算 value.toString();——转换字符串 str.substring();——截取字符串 会比较参数值的大小,小的参数在前面,负数变为0 str.slice()——切片,不会交换位置,负数从右到左数 str.split()——字符串切割,返回数组 ****** str.indexOf——查找字符串,成功返回索引,反之返回-1 ****** str.toUpperCase()——全部转换大写 str.toLowerCase()——全部到小写 */ var str = "wo shi shui"; // alert(str.length); // alert(str[4]);//可读性 str[0] = "W";//不可写 // console.log(str); var str1 = "wo zai na wo shi shui"; // console.log(str1.substring(2,5));//[2,5) // console.log(str1.substring(5,1)); // console.log(str1.substring(-5,5)); // console.log(str1.slice(1,5)); // console.log(str1.slice(5,2)); // console.log(str1.slice(-4,-2)); console.log(str1.split("i")); alert(str1.indexOf("a"));//4 alert(str1.indexOf("a",5));//8 alert(str1.indexOf("q")); </script> </body> </html>
数组方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <script> /* 数组 主要存放数据的 arr.length 查看数组的个数 arr[] 可以读可写 arr.push 在后面添加 能同时添加多个值 arr.unshift() 在前面添加 能同时添加多个值 arr.pop() 删除数组的最后一个 arr.shift() 删除数组的第一个 arr.splice() ****** (3) 数组的长度 (0, 1) 从第0位开始删除第一个 返回删除的那个 (2, 3, 'a') 从第二位开始后面三位全部替换成 a (2, 0, 'a') 第二位开始前面插入 a arr.sort() 顺序来排序 arr.reverse() 倒序排序 arr.join() ***** arr.join('a') 以`a`为界限拼接字符串 */ var arr = ["wmk","wf","zx"]; console.log(arr.length); // alert(arr[2]);//可读 arr[0] = "sqx";//可写 console.log(arr); arr.push("bb","wmk"); console.log(arr); arr.unshift("wjh","xiaopo"); console.log(arr); arr.pop(); console.log(arr); arr.shift(); console.log(arr); //arr.splice(3);//数组的长度为3 //console.log(arr); // arr.splice(1,2);//从小标1开始 删除两位 // console.log(arr); arr.splice(1,0,"qq","ww"); console.log(arr); // var arr1 = new Array(); // arr1[0] = "xiaopo1"; // arr1[1] = "xiaopo2"; // arr1[2] = "xiaopo3"; // console.log(arr1); var arr2 = ["我","是","小泼"]; console.log(arr2.join("+")); var arr3 = [-2,-8,-5]; // console.log(arr3.sort()); arr3.sort(function (a,b) { //return a-b;//从小到大 //return b-a;//从大到小 //return 1;//倒序 return 0; }); console.log(arr3); </script> </body> </html>
补充: