JavaScript基础

概念

一门客户端脚本语言

  • 运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎

  • 脚本语言:不需要编译,直接就可以被浏览器解析执行了

  • 功能:可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。

JavaScript发展史

  1. 1992年,Nombase公司,开发出第一门客户端脚本语言,专门用于表单的校验。命名为 :C-- ,后来更名为:ScriptEase
  2. 1995年,Netscape(网景)公司,开发了一门客户端脚本语言:LiveScript。后来,请来SUN公司的专家,修改LiveScript,命名为JavaScript
  3. 1996年,微软抄袭JavaScript开发出JScript语言
  4. 1997年,ECMA(欧洲计算机制造商协会),制定出客户端脚本语言的标准:ECMAScript,统一了所有客户端脚本语言的编码方式。
  • JavaScript = ECMAScript + JavaScript自己特有的东西(BOM+DOM)

  • ECMAScript:客户端脚本语言的标准

语法

内部JS: 定义<script>,标签体内容就是js代码

外部JS:定义<script>,通过src属性引入外部的js文件

注意

  1. <script>可以定义在html页面的任何地方。但是定义的位置会影响执行顺序。

  2. <script>可以定义多个。

特殊语法

  1. 语句以 ; 结尾,如果一行只有一条语句则 ;可以省略 (不建议)
	<script>      
        var a = 3
        alert(a)
    </script>
  1. 变量的定义使用 var 关键字,也可以不使用

    用: 定义的变量是局部变量

    不用:定义的变量是全局变量(不建议)

	<script>      

     /*   b = 4;
        alert(b);*/
        var b ;
        function fun(){
            b = 4;
        }
        fun();
        alert(b);
    </script>

注释

  • 单行注释://注释内容
  • 多行注释:/*注释内容*/
  • <!--HTML注释-->
  • /*CSS注释*/

数据类型

分为原始数据类型和引用数据类型

原始数据类型【基本数据类型】

numberstringbooleannullundefined

  • number:数字。 整数/小数/NaN

NaN:not a number 一个不是数字的数字类型

  • string:字符串。 "abc" "a" 'abc'

JS没有字符概念

  • boolean: true和false

  • null:一个对象为空的占位符

  • undefined:未定义。 如果一个变量没有给初始化值,则会被默认赋值为undefined

引用数据类型:对象

变量:一小块存储数据的内存空间

Java语言是强类型语言,而JavaScript是弱类型语言。

  • 强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据类型。只能存储固定类型的数据
  • 弱类型:在开辟变量存储空间时,不定义空间将来的存储数据类型,可以存放任意类型的数据。

语法

var 变量名 = 初始化值;
  • 获取变量的类型:typeof(变量名);

null运算后得到的是object(null算对象的占位符,也说得通)

代码:

	    <script>
       // 定义number类型
       var num = 1;
       var num2 = 1.2;
       var num3 = NaN;

       document.write(num + "<br>" + num2 +"<br>" + num3 + typeof(num3) + "<br>"); // number

       // string
       var str = "abc";
       var str2 = 'eee';
       document.write(str + "<br>" + +str2 + typeof(str2)+"<br>"); // string

       // [重要]
       var obj = null;
       var obj2 = undefined;
       var obj3;
       document.write(obj + typeof(obj)+"<br>"); // gbject
       document.write(obj2 + typeof(obj2)+"<br>"); // undefined
       document.write(obj3 + typeof(obj3)+"<br>"); // undefined
    </script>

运算符

一元运算符

只有一个运算数的运算符

++,-- , +(正号)  

自增/自减:(++、–)

  • ++(–) 在前,先自增(自减),再运算
  • ++(–) 在后,先运算,再自增(自减)

正负号:(+、-) 【重要】

JS中,如果运算数不是运算符所要求的类型,那么js引擎会自动的将运算数进行类型转换

其他类型转number 【重要】

  • 若字符串中的是纯数字,则直接返回该数值
  • 若字符串中不是纯数字,则返回NaN
  • 若字符串为空(null),则返回0
  • 转换布尔型,则true返回1,false返回0
  • 转换undefined,则返回NaN

代码:

	<script >		
		var num = 3;
        var a = num++ ;

        document.write(num);// 4
        document.write(a); // 3

        var b = "123abc";
        var c = +b;
        document.write(typeof (b));  // string
        document.write(b + 1);  //123abc1
        document.write(typeof (c)); // number
        document.write(c + 1); // NaN

        var flag = + true;
        var f2 = + false;
        document.write(typeof (flag) + "<br>");//number
        document.write(flag + "<br>");// 1
        document.write(f2 + "<br>");// 0
        
       var obj = null;
       var obj2 = undefined;
       var obj3;
       document.write(+obj+"<br>"); //0
       document.write(+obj2+"<br>"); // NaN
       document.write(+obj3+"<br>"); // NaN
    </script>

算数运算符

+ - * / % ...

赋值运算符

=  +=  -+ ....

比较运算符

 > <  >=  <=  ==  ===(全等于)

比较方式

  1. 类型相同:直接比较

    字符串:按照字典顺序比较。按位逐一比较,直到得出大小为止。

  2. 类型不同:先进行类型转换,再比较

    ===:全等于。在比较之前,先判断类型,如果类型不一样,则直接返回false

代码:

<script>
        document.write((3 > 4) +"<br>"); //false

        document.write(("abc" < "acd") +"<br>"); //true

        document.write(("123" == 123) +"<br>"); //true

        document.write(("123" === 123) +"<br>"); //false

</script>

逻辑运算符

&& || !

其他类型转boolean 【重要】

  1. number:0或NaN为假,其他为真
  2. string:除了空字符串(""),其他都是true
  3. null&undefined:都是false
  4. 对象:所有对象都为true

代码:

演示number

		//number
        var num = 3;
        var num2 = 0;
        var num3 = NaN;
        document.write(!!num+"<br>"); // true
        document.write(!!num2+"<br>"); // false
        document.write(!!num3+"<br>"); // false

演示string

		//string
        var str1 = "abc";
        var str2 = "";
        document.write(!!str1+"<br>"); // true
        document.write(!!str2+"<br>"); // false

演示null、undefined

		// null & undefined
        var obj = null;
        var obj2;
        document.write(!!obj+"<br>"); // false
        document.write(!!obj2+"<br>"); // false

演示对象

		// 对象
        var date = new Date();
        document.write(!!date+"<br>"); // true

        var obj = "123";
		alert(obj);
        // 按照java方式书写
        if(obj != null && obj.length > 0) {
            alert("HaHa");
        }

        // JS可以简化书写
        if(obj) {
            alert("HeiHei");
        }

三元运算符

判断表达式的值,如果是true则取值1,如果是false则取值2

表达式 ? 值1 : 值2;

代码:

var a = 3;
var b = 4;
var c = a > b ? 1:0;

流程控制语句

  • if...else...switch

在java中,switch语句可以接受的数据类型:byte int shor char,枚举(1.5) ,String(1.7)

在JS中,switch语句可以接受任意的原始数据类型。

代码:

    <script>

        var a;
        switch (a){
            case 1:
                alert("number");
                break;
            case "abc":
                alert("string");
                break;
            case true:
                alert("true");
                break;
            case null:
                alert("null");
                break;
            case undefined:
                alert("undefined");
                break;

        }
    </script>
  • while
    <script>

       //1 ~ 100 求和  5050

        var sum = 0;
        var num = 1;

        while(num <= 100){
            sum += num;
            num ++;
        }
        alert(sum);

    </script>
  • do...whilefor
    <script>

       //1 ~ 100 求和  5050
        var sum = 0;
        for (var i = 1; i <= 100; i++){
            sum += i;
        }
        alert(sum);

    </script>

案例_99乘法表

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>

    <style>
        td{
            border: 1px solid;
        }
    </style>
    <script>
      document.write("<table border='0' align='center'>");
      for (var i = 1; i < 10; i++) {
        document.write("<tr>");
        for (var j = 1; j <= i; j++) {
          document.write("<td>");
          document.write(i + " * " + j + " = " + i * j + "&nbsp;&nbsp;");
          document.write("</td>");
        }
        document.write("<br>");
        document.write("</tr>");
      }
      document.write("<table>");
    </script>
  </head>
  <body></body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值