web前端中js详解第二篇

Js(二)

1.操作符

由于下面的内容和python相似,所以只挑重要的详细说一下

算术运算

定义方式除了var以外还有一种方式let,这种方式更为严格,如果var声明了相同的变量,则后面赋的值会把前面赋的值覆盖掉,而let相同的变量只能定义一次,否则会报错。

一次性定义多个值:

var a=1,b=2,c="3";

一开始不给赋值,后面再赋值也行

var a,b,c;
a=1
b=2
c="3"
//%:求余数
//当不是数字的运算时,"+"一旦有string类型就是拼接,最终结果为字符串
//而 - / % * 则是自动隐式转换为数字去计算

如果无法隐式转换成数字,就会输出'NaN'

<script>
var a = 'c';
var b = 8;
</script>

赋值运算符

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       // var a = 8;
       // a += 1; //a=a+1
       // console.log(a)

       // var a = 8;
       // var b = a++;
       // console.log(a,b)
       // //得到的是9和8而不是8和9,因为这时候分两步,第一步: b=a 第二步:a=a+1
       // //++在后面是先赋值,再加一,++在后面是先加一,后复赋值
       // var c = 1;
       // var d = ++c;
       // console.log(c,d)
   </script>
</body>
</html>

比较运算符

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       var a = '8';
       var b = 8;
       if(a === b){
           alert('hello')
      }else {
           alert('python')
      }
       //上面输出python
       //全等于时不但数据要一样,而且类型也要一样
       //如果是"=="的话就只比值,不比对类型。
   </script>
</body>
</html>

逻辑运算符

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       //&& 与 两边都为真结果才为真,其他都是假
       //|| 或 两边都为假结果才为假,其他都是真
       //! 非 取反,真变假,假变真
       //当两边不一定是布尔值时
       //&& 遇到假就停 不会进行数据转换
       //|| 遇到真就停 不会进行数据转换
       //! 隐式类型转换,将后面的数据先转换为布尔值在取反
       var a = true && true && false   //输出为假
       var b = 0 || 0 || 2     //输出为2
       var c = 2 && -1 && ''   //输出为空
       var d = 0 && null       //输出为0,因为第一个条件就不符合了
       //先判断2 && -1发现为真,然后往下判断-1 && ''发现为假,然后输出空
       //"或"是一直判断下去,直到有真才输出真的值
       //"与"是一直判断下去,直到有假才输出假的值
       //逻辑运算符不是判断值是否相等的,只判断是不是为真
   </script>
</body>
</html>

以下在进行判断时为假:

1.0

2.null

3.undefined

4.NaN

5.''(空字符串)

6.false

2.控制流程

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       var a = 0;
       // if (a >= 0){
       //     alert("真")
       // }else {
       //     alert("假")
       // }
       // 三目运算:条件? 真语句: 假语句
       // a>=0? alert("真"):alert("假")

       // var x = 8;
       // if (x>50){
       //     alert('x>50')
       // }else if(x>30){
       //     alert('x>30')
       // }else if(x>=10){
       //     alert('x>=10')
       // }else {
       //     alert("hello world")
       // }
       
       //switch速度会比if快一些
       var day = 3
       switch (day){
           case 1:
               document.write("1")
               //document.write()是写在终端(网页)内,不写在控制器内
               //console.log()是写在控制器内
               break
           case 2:
               document.write("2")
               break
           case 3:
               document.write("3")
               break
           case 4:
               document.write("4")
               break
      }
   </script>
</body>
</html>

3.循环

for循环

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
<script>
   //循环长这样:
   // for(条件){
   //     执行语句
   // }
   //如果外面没有定义变量,for内也可以定义
   //和c语言的for循环有一定的类似性
   for (var i=1; i<=9; i++){
       for (var j=1;j<=i ;j++){
           var b = i*j
           document.write(i+"*"+j+"="+b+'&emsp;')//拼接
      }
       document.write("<br>")
  }
</script>
</body>
</html>

循环实例

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <style>
       *{
           padding: 0;
           margin: 0;
      }
       li{
           width: 100px;
           height: 100px;
           background: red;
           margin: 10px;
      }
   </style>
</head>
<body>
<ul>
   <li>0</li>
   <li>1</li>
   <li>2</li>
   <li>3</li>
   <li>4</li>
</ul>
<script>
   //点击哪个就弹窗出来对应的数字,可以重复点击,此方法使用循环
   var aLi =  document.getElementsByTagName('li');
   var len = aLi.length;
   for (var i = 0; i<len; i++){
       aLi[i].wwwww = i      //保存值
       aLi[i].onclick = function () {
           alert(this.wwwww)
      }
  }
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <style>
       *{
           padding: 0;
           margin: 0;
      }
       li{
           width: 100px;
           height: 100px;
           background: red;
           margin: 10px;
      }
   </style>
</head>
<body>
<ul>
   <li>0</li>
   <li>1</li>
   <li>2</li>
   <li>3</li>
   <li>4</li>
</ul>
<script>
   //点击哪个就弹窗出来对应的数字,不用循环的方法,但是如果事件多的话就不合适了
   var aLi =  document.getElementsByTagName('li');
   aLi[0].onclick = function (){
       alert(0)
  }
   aLi[1].onclick = function (){
       alert(1)
  }
   aLi[2].onclick = function (){
       alert(2)
  }
   aLi[3].onclick = function (){
       alert(3)
  }
   aLi[4].onclick = function (){
       alert(4)
  }
</script>
</body>
</html>

while循环

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>

</head>
<body>
   <script>
       var i=0
       while (i<10){
           console.log(i)
           i++
      }
   </script>
</body>
</html>

do while循环

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>

</head>
<body>
   <script>
       var i=0
       do{
           console.log(i);
           i++;
      }
       while (i<10)
   </script>
</body>
</html>

4.字符串方法

string 字符串
         索引,下标,偏移量---从0开始
         str[index];通过索引取字符串
         str.length;获取长度 空格也算
         value.toString();--转换字符串
         str.substring();--截取字符串会比较参数值的大小,小的参数在前面,负数变为0
         str.slice()--切片,不会交换位置,负数从右到左数
         str.split()--字符串切割,返回数组
         str.indexOf --查找字符串,成功返回索引,反之返回-1 ===>相当于python中的find
         str.toUppweCase()--全部转换大写
         str.toLowerCase()--全部转换小写
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
<script>
       var str="wo shi shui";
       console.log(str.length);
       console.log(str[3]);

       //执行以下两行代码输出的东西不变,所以可以发现string方法不能改变值
       //string类型不可变
       str[0] = "Q";
       console.log(str);

       //将其他类型的数据转化为字符串
       var a = 8;
       alert(typeof a.toString())

       //substring遵循左闭右开原则
       var str1 = "wo shi shui wo zai na";
       //截取字符串会自动比较参数值的大小,小的参数在前面,大的参数在前面,这点和python不一样
       //下面两行代码输出结果一样
       console.log(str1.substring(3,9));
       console.log(str1.substring(9,3));
       //负数变为0 ===>(0, 9)
       console.log(str1.substring(-3,9));

       //slice遵循左闭右开原则
       console.log(str1.slice(3,9));
       console.log(str1.slice(9,3));  //输出为空,python也是为空,所以不能倒着写
       console.log(str1.slice(-5,-1));


       console.log(str1.split('i'));
       alert(str1.indexOf('h',5))//这里的数字意思是从几号位置开始找
</script>
</body>
</html>

5.数组(列表)方法

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       var arr =["april",'班长','有你','大当家','七叶'];

       //索引取值
       console.log(arr[3]);

       //赋值(改变值)
       arr[4] = "忧游";
       console.log(arr);
       //如果一共5个数据,你修改第八个,也就是跳过一些位置会输出:
       //['april', '班长', '有你', '大当家', '七叶', 空 ã3, '忧游']

       //添加
       arr.push("思雨",'三月')  //可以添加多个
       arr.unshift("眠",'鲨鱼')

       //删除,不能指定,括号里不能填数字
       console.log(arr.pop())
       console.log(arr.shift())

       //指定删除
       console.log(arr.splice(3)); //保留前三个,剩下全部删除,如果里面的数字大于总数则一个都不会删除
       console.log(arr.splice(2,2));  //从2号位置开始删除2个,但是不包含2号元素
       console.log(arr.splice(1,2,"哈哈"));//从1号位置开始删除两个,然后再加上’哈哈‘,不删除只添加的话就把2改为0

       // 另一种定义数组方式
       var arr11 = Array();  //定义空数组
       arr11[0] = 'qqq';   //给空数组添加值,数组没有互异性或者去重功能,所以值可以重复

       //排序
       var arr2 = [1,5,3,6,3,2,2,8,9]
       var arr3 = arr2.sort()
       var arr12 = arr2.sort().reverse() //逆序

       //拼接
       var arr5 = ["思",'月']
       var q = arr5.join("和")
       console.log(q)
       
       //多拼接
       var arr1 = [1,2,3]
       var arr4 = [4,5,6]
       var arr7 = [7,8,9]
       //如果直接用"+"拼接则arr1,arr4,arr7之间没有逗号,最后出来的是字符串不是数组
       var arr6 = arr1.concat(arr4).concat(arr7)
       console.log(arr4)
   </script>
</body>
</html>

6.数字方法

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <script>
       //转化为数字(number)类型
       var a = '888';
       console.log(typeof Number(a))
       var b = 'aa';
       console.log(typeof Number(b));

       //下面这一串代码会随机得到0-1之间的一个浮点数
       console.log(Math.random())

       //可以这么写,出来的就是他输入的倍数:
       console.log(Math.random()*100)

       //只取整数部分
       console.log(Math.floor(Math.random()*100))

       //保留两位小数
       console.log(Math.random().toFixed(2))

       //转化为数字类型,遇到不是数字的就会停,
       var c = '88afevafw123debr';
       console.log(typeof parseInt(c))
       //parseFloat()可以使小数部分转化为数字类型,遇到不是数字的就停,并输出已转化的
       //parseFloat()是从整数部分直到小数都转化,如果整数部分有不是数字的东西也立马就停了,轮不到小数部分
       var d = '1325ww6.124353'
       console.log(parseFloat(d))
   </script>
</body>
</html>

 

posted on 2022-03-31 09:02  请你一定要记得我好吗  阅读(86)  评论(0)    收藏  举报