Java之JS简介

一、JS概念

JavaScript :简称 JS ;是一门基于对象的和事件驱动的,用于实现页面动态效果的脚本语言。

**页面效果:**页面的数据/样式可以改变。

基于对象:

  1. JS中所有的内容都是对象。
  2. JS编程中使用的大部分对象内存中以创建好了。

事件驱动: 在页面中进行的所有操作 ------ 事件,操作发生,就会执行此事件上注册的JS代码。

脚本语言: 用于实现页面动态效果的解析性编程语言。

JS和Java的区别:

  1. 相同点: 都是编程类语言。

  2. 不同点:

    ​ a. JS是解析性语言,JS代码通过浏览器解析就可以执行。

    ​ Java是编译型语言,Java代码需要被编译器编译为.class二进制文件才能执行。

    ​ b. JS是基于对象:JS中所有的内容都是对象,并且需要的大部分对象,浏览器内存已创建好。

    ​ Java是面向对象:一种编程思想,通过调用具有帮助我解决问题功能的对象来解决问题。

    ​ c. JS是弱类型语言:变量在内存中的空间大小可以更改。

    ​ Java是强类型语言,不同的数据类型在内存中的空间大小是固定的。

    ​ d. JS是脚本语言,实现页面的动态效果。

    ​ Java是程序开发的编程语言,实现程序的后台业务逻辑。

    二、JS与HTML的结合方式

    <script  type="text/javascript">
        /*
        1 script标签可以在页面的任意位置  可以定义多个
        2 script标签中的代码就是js代码 
        3 浏览器可以对js代码进行解析和执行
        4 js的注释和java完全相同
        5 通过srcipt的src属性来引入外部js文件  			   
        */
        alert("我是一个弹出框");//alert方法:弹出框
    </script>
    <script  type="text/javascript"  src="first.js">
        alert("我呦呦呦是一个弹出框");/*引入了外部js文件的script标签中不能再写代码*/
    </script>
    

    三、JS语法:(与Java不同的地方)

    1. 关键字:被赋予特殊含义的单词字符。

    2. 标识符:所有的名字。

    3. 运算符:实现数学运算的所有符号。

    ​ 1).算术运算符

    //算术运算符:+ -  * /  % ++  --
    //alert("1/2="+1/2);//在js中所有的数字都是number类型
    //alert(1+1);//2
    //alert(1+'1');//"11"   运算中 字符串两边的+是连接符  
    //alert(5-"2");//3     如果字符串前后是其他运算符  会把字符串自动转换为数字 然后运算
    //alert(5-'a');//NaN    number类型的常量值 not a number 
    //alert((5-'a')==(5-'a'));  //false  在js中判断相同/相等 统一用==
    // NaN==NaN 为false
    //alert(isNaN(5-'A'));//true	  //判断是否为NaN 通过方法	isNaN
    
    // 1, 加法运算  
    // 字符串和数字相加会把数字转化成字符串,然后拼接起来
    console.log(name + age); //  李四30
    console.log("12" + 30) ; //  1230
    // 字符串和布尔类型相加, 会把布尔转成字符换,然后拼起来
    console.log(name + sex); //李四false
    // 数字和布尔类型相加, 会把布尔转成数字(false=0,true=1),然后数字相加
    console.log(age + sex); // 31
    // 各编程语言中对小数的运算都会存在微小的误差, 无法避免
    console.log(0.1 + 0.2); // 0.30000000004 
    
    // 2, 减法,乘法和除法
    // 字符串和数字相减会试图把字符串转化成数字,然后相减, 如果转化失败,会得到NaN: not a number 非数字
    console.log(name - age); //  NaN
    console.log("12" - 30) ; //  -18
    // 字符串和布尔类型相减, 会试图把布尔(false=0,true=1)和字符串都转成数字,然后相减,如果转化失败,会得到NaN 
    console.log(name - sex); //  NaN
    console.log("12" - sex); //  11
    // 数字和buer类型相减, 会把布尔转成数字(false=0,true=1),然后数字相减
    console.log(age - sex); // 29
    
    // 3, 取余   %  
    console.log(5 % 3 ) ;  // 2
    console.log(5.2 % 3);  // 2.2
    console.log(5 % 3.2);  // 1.8
    
    // 4, 自增++   自减 --  
    // 一般用于整数的加1 或者减1
    var number = 3;
    // 整数增加1的三种写法
    number ++;  
    number += 1;
    number = number + 1;
    // 如果把++符号放在变量前, 也是自增1
    ++ number;
    // 区别是: ++在前表示先加1然后打印结果
    //        ++在后表示先打印变量值,再加1
    console.log(number);
    console.log(++ number);
    console.log(number ++);
    
    number = 3;
    console.log(++ number * number -- / number);  // 5.33
    // 第一步: 第一个number先加1得到4
    console.log(4 * number -- / number);
    // 第二步: 第二个number先参与乘法4*4, 然后number再减1得3
    console.log(16  /  3);
    // 第三步: 第三个number此时的值是3 
    

    ​ 2). 赋值运算符

    ​ 3). 比较运算符

    ​ 4).逻辑运算符

    /*
    //2 赋值运算符: =  += -= *= /= %=   和java完全相同
    //3 比较运算符: > >= < <= ==  !=    和java完全相同
    //4 逻辑运算符: &&  ||  ^   !
    //所有的数据都可以作为boolean来使用  除了null "" 0 NaN undefined 其他都是true
    var  a;a=true;a=1;a=1.1;a='1';a="aaa";a=[];a=new Date();a=new Object();//都是true
    a=false;a=0;a=0.0;a=null;a="";a=NaN;a=undefined;//false
    if(a){
    alert(a+"可以作为true");
    }else{
    alert(a+"可以作为false");
    }
    */
    
    // 并且 &&  : 所有条件全部为true,结果为true, 有一个为false,结果就是false 
    console.log( 2 && 2 > 3 && true); 
    // 或者 ||  : 所有条件全部为false,结果为false, 有一个为true,结果就是true
    console.log( 2 == 2 || 2 > 3 || true); 
    // 非 !  : 针对bool类型值取反, 如果不是bool类型,会隐式转换为bool值再取反
    console.log( !true );
    console.log( !"0" );
    

    ​ 5).位运算符

    //5 位运算符:操作的是数字的二进制  0当false 1当true
    // |  &  ^  >>  <<
    //alert(11|3);//
    //alert(11>>3);//1011  删除后面三位  1
    //alert(11<<3);//1011 在后面添加三个0  1011000
    
    // 按位与 &   按位或 |  不是判断符,是运算符  只针对整数计算   
    console.log( 3 & 6 ); //结果3
    console.log( 3 | 6 ); 
    // 原理: 指的是二进制上相同位之间的且/或
    // 3 用二进制表示是  011   
    // 6 用二进制表示是  110   
    // 011 &  110 == 010  转成10进制   2
    // 011 |  110 == 111  转成10进制   7
    
    // 移位   左移<<   右移>>   : 二进制之间的位移
    console.log(20 << 3);  // 160
    // 20 转化为二进制    0001 0100 
    // 左移三位: 把所有的1向左移三位   1010 0000  
    // 1010 0000 转成10进制  是  160 
    console.log(20 >> 3);
    // 20 转化为二进制    0001 0100
    // 左移三位: 把所有的1向右移三位, 超出最右侧一位会被忽略   0000 0010
    //0000 0010  转成10进制  是  2
    
     				6).三元运算符
    
     //6 三元运算符
     var a=2,b=4;
     var maxab=a>b?a:b;//在定义变量名/方法名 名字不要太正宗
     alert(maxab);
    
    1. 数据类型:

      /*
      //数据类型:  typeof(n)  判断参数数据的类型
      //在js中数据类型:  number  boolean  string  object  undefined
      alert("typeof(1)="+typeof(1));//number
      alert("typeof(1.1)="+typeof(1.1));//number
      alert("typeof('a')="+typeof('a'));//string
      alert("typeof(\"abc\")="+typeof("abc"));//string
      alert("typeof(true)="+typeof(true));//boolean
      alert("typeof([1,2,3,4])="+typeof([1,2,3,4]));//object
      alert("typeof(new Date())="+typeof(new Date()));//object
      alert("typeof(new Object())="+typeof(new Object()));//object
      alert("typeof(NaN)="+typeof(NaN));//number
      alert("typeof(null)="+typeof(null));//object
      alert("typeof(undefined)="+typeof(undefined));//undefined
      */
      
    2. 常量和变量

      /*
      //常量和变量
      var  i;//定义变量通过关键字var variable  js是弱类型语言 变量的类型可以更改
      i=1;//number
      i="abc";//string
      var  j;
      alert("j="+j);//变量定义了  但没有赋值  默认值undefined
      k=i;//变量可以不定义  直接使用  但不规范
      j=null;   //引用j 地址栏存放是常量值null 表示j没有指向任何对象
      j="";     //引用j地址栏存放的是字符串对象""的地址  j指向的是对象""
      j=undefined; //变量j没有赋值
      */
      
    3. 流程控制:

      	//1 顺序结构
          //2 选择结构 
         			
          var i=1;
          if(i=2){//所有的数据都可以当boolean来使用
          //alert("先把2赋值给i 然后判断i是不是true"); 
          }
          if(2==i){//为了防止少写一个=  把常量写在左边
          //alert("2==i");
          }
      
          //switch  穷举法   java中switch表达式的值之内是int/string  
          //                 js中switch表达式的值之内可以是number/string
          i=1.1;
          switch(i){
          case 1.1:
          alert("case 1.1 成立!"); break;
          default:
          alert("case 1.1 不成立!"); break; 
          }
          i="abc";
          switch(i){
          case "abc":
          alert("case abc 成立!"); break;
          default:
          alert("case abc 不成立!"); break; 
          }
         
      
      //循环结构:for  while dowhile
      	var sum = 0;
      	for (var n = 1; n <= 100; n++) {
      		var m = 1; m++;
      		sum += n;
      	}
      	alert("sum="+sum+",n="+n+",m="+m);//sum=5050  n=101
      

      在js中变量有两种:全局变量+局部变量

      全局变量 : 方法外面定义的变量 》》》作用域是整个页面。

      局部变量 : 方法体/参数列表定义的变量 》》》作用域是当前方法。

      	//使用for求质数
          var n = 101;
          for (n = 1; n <= 100; n++) {
          var b = true;//定义变量作为标签 记录n是否被除尽过
          for (var m = 2; m < n; m++) {//定义变量m让其从2跑到n-1  循环判断m是否可以除尽n
          if (n % m == 0) {
          b = false;//除尽就更改标签的值
          }
          }
          //m跑完后  通过判断标签的值是否更改来判断n是否被除尽过 进而来判断n是不是质数
          if (n > 1 && b) {
          //alert("n="+n+" 是质数!");
          }
          }
      
          //使用js在页面打印九九乘法表
          document.write("document.write方法 是把数据显示到页面<br/>");
          for (var i = 1; i <= 9; i++) {
          for (var j = 1; j <= i; j++) {
          document.write(i + "*" + j + "=" + i * j + "&nbsp;&nbsp;" + (i * j >= 10 ? "" : "&nbsp;"));
          }
          document.write("<br/>");
          }
      
          //使用表格来实现打印九九乘法表
          document.write("<hr/>");
          document.write("<table>");
          for (var i = 1; i <= 9; i++) {
          document.write("<tr>");
          for (var j = 1; j <= i; j++) {
          document.write("<td>" + i + "*" + j + "=" + i * j + "</td>");
          }
          document.write("</tr>");
          }
          document.write("</table>");
      
      //跳转结构:
      //break: 1用在switch中表示结束switch结构  
      //       2 用在循环中结束本层循环
      //continue: 用在循环中 结束本次循环 继续++ 进行下次循环
      
    4. 数组:装多个数据的容器。

    5. 语句:可以执行的计算机命令。

    6. 方法:定义的具有指定功能的代码块。

      方法: 具有指定功能的代码块;作用是提高代码的复用性。

      java方法格式: 修饰符 返回值类型 方法名(参数列表){

      ​ 方法体;

      ​ return 返回值;

      ​ }

      js方法格式: function 方法名(参数列表){

      ​ 方法体;

      ​ return 返回值;

      ​ }

      关键字function: 声明在定义方法。

      JS是弱类型语言 , 不需要声明返回值类型 。

      注意事项1: 等待方法没有返回值 调用者接受 获取的是undefined。

      注意事项2: 方法参数列表+方法体中定义的变量是局部变量 作用域是当前方法。

      注意事项3: 变量名=方法名(); 是在对应方法并接受方法的返回值。

      ​ 变量名=方法名 是给方法又起个名字。

      注意事项4: js中不存在方法重载 实参个数可以和形参个数不一致。

      ​ js方法中默认数组arguments来接受所有的实参。

      形参: 定义方法时 参数列表定义的变量。

      实参: 方法调用时 传递的数据 。

      //求两个数的和
      function add1(a, b){//参数列表:定义变量接受方法执行需要的原始数据  不需要写var
          var sum=a+b;   
          return sum;
      }
      
      var  sum2=add1(1,3);//调用方法
      //alert("sum2="+sum2);
      function add2(a, b){//参数列表:定义变量接受方法执行需要的原始数据  不需要写var
          var sum=a+b;
          alert(a+"+"+b+"="+(a+b));
          //return;//结束方法  把返回值返回给调用者
      }
      //sum2=add2(1,3);
      //alert("sum2="+sum2);//undefined  当方法没有返回值 调用者接受 获取的是undefined
      
      //sum2=add2;//给方法add2又起个名字叫sum2
      //alert("sum2="+sum2);
      //var  sum3=sum2(1,3);
      
       function add3(a,b){
       alert("a="+a+",b="+b);
       for(var i=0;i<arguments.length;i++){//每个方法中有个默认的数字 arguments 来接受方法的参数列表
       	alert("arguments["+i+"]="+arguments[i]);
       }
      
      }
      //add3(1);//b=undefined  //可以不给参数列表传值
      //add3(1,2);//可以给方法传递比参数列表多的参数
      //add3(1,2,3);
      
    7. 对象:数据和功能的封装体。

四、JS已有的学习

Array类 数组

js数组特点:

  1. ​ js不存在下标越界 数组长度可变
  2. ​ js数组元素默认值是undefined
  3. ​ js数组元素类型可以不同

js数组方法:

​ 属性:length 获取元素个数

​ 方法:

  1. ​ string join(separator) 使用参数字符拼接所有元素 返回一个字符串
  2. ​ void push([item1 [item2 [. . . [itemN ]]]]) 把参数元素添加到数组末尾
  3. ​ void reverse( ) 元素反转
  4. ​ void sort([fn]) 对数组排序 默认从小到大排序; 如果参数fn有值 按参数fn排序法则
  5. ​ void pop() 移除最后一个元素 并返回此元素
  6. ​ void shift() 移除第一个元素 并返回此元素
var  arr;
arr=new Array();//创建一个数组 没有元素
arr=new Array(5);//创建一个数组 有5个元素
arr=new Array(1,2,3,5,6,7);//创建一个数组 元素是指定的值
arr=[1,4,5];//简化写法
String 字符串

​ 属性:length 获取字符个数

​ java相同方法:

  1. ​ char charAt(index); 获取idnex处的字符
  2. ​ string string1.concat([string2[, string3[,]]) 字符串拼接 形成一个新的字符串
  3. ​ int indexOf(subString[, startIndex]) 获取subString第一次出现的位置
  4. ​ int lastIndexOf(substring[, startindex]) 倒着找,找不到返回-1
  5. ​ string replace(rgExp, replaceText) 使用replaceText替换第一个rgExp
  6. ​ string[] split(separator) 分割字符串
  7. ​ string substr(start [, length ]) 截取子串从start开始总共length个字符
  8. ​ string substring(start, end) 截取子串从start开始到end-1处的字符
  9. ​ string toLowerCase( ) 转换为小写
  10. ​ string toUpperCase( ) 转换为大写

​ js特有的方法:

  1. ​ string bold(); 在字符串两边加b标签
  2. ​ string fontcolor(colorValue);设置font的color属性
  3. ​ string fontsize(sizeValue);设置font的size属性
var str;
str=new String("123");//创建字符串方式1 通过new 调用String的构造方法
str="123";//创建字符串方式2 通过""
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值