Web前端开发(三)-- JavaScript

2017-10-22  本文已影响0人  404er

1.JavaScript概述

2.JavaScript语言特点

1.基于对象的编程语言

​ 基于对象而不是面向对象,因为对象性的特征在JavaScript中并不像Java语言中那样纯正

2.弱类型语言

​ 变量定义的时候不需要指定类型,具体赋值的时候,值决定变量的数据类型

3.解释执行的脚本语言

4.简单性

​ JavaScript基于Java的基本语法和语句流程

5.动态性

​ JavaScript是基于事件驱动的,例如,鼠标单击按钮,页面加载完毕等等这些都是

6.平台无关性

​ 只要有支持JavaScript的浏览器,无论在什么平台上

7.安全性

3.HTML中嵌入JavaScript脚本

1.内联引用

<input type="button" value="hello" onclick="window.alert("Hello World!");" />
<!--
    1.JS中有一个内置对象window(必须全部小写),window内置对象代表的是当前浏览器窗口,属于BOM范围
    2.JS语句也要以";"结尾,但这不是必须的
    3.JS中的字符串可以用单引号或者双引号括起来
-->

2.内部引用

<head>
    <script type="application/javascript">
        alert("---->");
    </script>
</head>

3.外部引用

文件名:my.js

alert("Hello World!");

文件名:html.js

<script type="application/javascript sr="my.js"></script>
<!--如果想写其他JS语句,需要另外写一对script标签-->

4.JavaScript基础

1.注释

1.JavaScript
2.CSS
3.HTML
 <!-- -->

2.JavaScript标识符、关键字、字面值

var x=1;
/*
    1.标识符命名规则:
        - 必须由数字,字母,下划线,美元符号组成
        - 不能以数字开始
        - 严格区分大小写
        - 关键字不能作为标识符
    2.标识符命名规范:
        - 类名每个首字母大写
        - 函数名、变量名首字母小写,后面每个单词首字母大写
    3.关键字:
        function,var,if,else,for,while,do,true,false...
    4.字面值:
        数值型字面值,字符串型字面值,布尔型字面值...
*/

3.JavaScript变量

1.
//声明变量
var i;
alert("i = " + i); //undefined
//赋值
i = 10;
alert("i = " + i); //10
//重新赋值
i = "abc";
alert("i = " + i); //abc
//再次赋值
i = false;
alert("i = " + i); //false
//一行上声明多个变量
var a,b,c = 300;
alert("a = " + a); //undefined
alert("b = " + b); //undefined
alert("c = " + c); //300

/*
    1.什么是变量?
        变量是内存中存储数据的基本的单元
    2.JavaScript中的所有变量声明时不需要指定数据类型,统一采用var关键字声明
    3.JavaScript的变量内存在浏览器缓存当中
    4.JavaScript中的变量也必须先声明再赋值才能使用,如果没有赋值,会默认赋值undefined
*/
2.
<html>
  <head>
    <title></title>
    <script type="application/javascript">
      //直接在脚本块中定义的变量是全局变量
      //全局变量的生命周期是从浏览器打开到最终浏览器关闭
      var username = "yyb";
      //声明函数
      function sayHello(){
        alert("Hello" + username); //username是全局变量
        //继续访问全局变量username
        username = "yybzzz";
      }
      //调用函数
      sayHello();
      //访问全局变量
      alert("username = " + username); //
      var v; //undefined
      //一个变量没有声明直接访问,会报错
      //alert(age); //异常:引用错误,age未定义
      //声明函数
      function testFun(){
        //局部变量
        var i = 100; //内存空间只在函数体中有效
      }
      //调用函数
      testFun();
      //访问变量i
      //alert(i); //异常,变量不存在
      //声明函数
      function myFun(){
        //变量声明的时候没有使用var关键字,不管这个变量是声明在什么位置的,该变量都是全局变量
        usercode = "666";
      }
      //调用函数
      myFun();
      //访问usercode
      alert("usercode = " + usercode);
    </script>
  </head>
  <body>
  </body>
</html>

4.JavaScript函数

/*
    1.什么是函数?
        完成某个特定的功能,类似Java的方法
    2.JavaScript中的函数不需要指定返回值类型,因为可以返回任何数据类型的值
    3.函数名只要是合法的标识符就行
    4.JavaScript中的函数执行结束的时候可以编写return语句返回值,也可以不编写return语句返回值
    5.JavaScript函数调用的时候会在栈内存中分配空间,发生压栈动作,函数执行结束之后,会发生弹栈动作,
    局部变量的内存释放
    6.JavaScript中的函数没有重载overload这种机制,因为它是一种弱类型的编程语言
    7.JavaScript中所有的函数名不能重名,如果重名最后加载的函数有效
    8.函数不调用是不会执行的
*/
<html>
  <head>
    <title></title>
    <script type="application/javascript">
      function sum(a,b){
        return a + b;
    }
    var result1 = sum(10,20);
    alert(result1); //30
    var result2 = sum("10",20);
    alert(result2); //1020
    var result3 = sum(false,"abc");
    alert(result3); //"falseabc"
    function divide(a,b){
    
    }
    var ok = divide();
    alert(ok); //undefined
    </script>
  </head>
  <body>
  </body>
</html>

5.typeof运算符

##### 1.typeof运算符的作用:

​ 运行阶段动态判断变量的数据类型

2.typeof运算符的语法规则:

​ typeof 变量名

3.typeof运算符的运算结果是以下6种结果之一,都是字符串:

6.JavaScript数据类型

JavaScript中的数据类型:

1.Undefined类型
  1. Undefined数据类型只有一个值:undefined

  2. 什么时候变量的值是undefined?

    • 变量只声明没有赋值,系统默认赋值undefined
    • 手动赋值undefined
  3. var usercode = "undefined";//属于String类型,不是Undefined类型
    
2.Number类型
  1. Number数据类型被称为数值型,整数型和浮点型都属于Number类型

  2. Number类型包括的值:

    0、-1、1、3.1、NaN、Infinity等

    • NaN表示Not a Number,表示不是一个数字,但是属于Number类型
    • 应当返回数字,但是最终返回的不是一个数字的时候返回NaN
    • Infinity属于Number类型中的一个值,表示无穷大,只有当除数为0的时候,结果是Infinity
var a = 10;
var b = 3;
alert(a / b); //3.33333333

var a = "中国";
var b = 3;
alert(a / b); //NaN

var a = 10;
var b = 0;
alert(a / b); //Infinity

//isNaN()函数,判断是否是一个非数字
alert(isNaN(20 / 10)); //false

//Number()函数,将非数字转换成数字
alert(Number("10") + 1); //11
alert(Number("中国") + 1); //NaN
alert(Number("a") + 1); //NaN
alert(Number(false) + 1); //1,false被转换成0
alert(Number(true) + 1); //2,true被转换成1
alert(Number(undefined) + 1); //NaN

//以下两行程序存在自动转换,会自动调用Number函数完成转换
alert(false + 10); //10
alert(true + 10); //11

alert("2" + 10); //210,这里不自动调用Number函数,而是进行字符串连接运算
alert(Number("2") + 10); //12

//parseInt()函数,将“数字字符串”直接转换成“整数型数字”
var v = "3.14";
v = parseInt(v);
alert(v); //3

//parseFloat()函数
var x = "3.14";
x = parseFloat(x);
alert(x + 1); //4.14
3.Boolean类型
  1. 布尔类型在JavaScript中只有两个值:true和false,没有0和1

  2. //Boolean()函数,将非布尔类型转换成布尔类型
    alert(Boolean("")); //false
    alert(Boolean(undefined)); //false
    alert(Boolean(NaN)); //false
    alert(Boolean(0)); //false
    alert(Boolean(null)); //false
    alert(Boolean("abc")); //true
    alert(Boolean(1)); //true
    
    //if(必须是true或者false,如果不是将自动调用Boolean函数进行类型转换)语句
    
4.String类型
  1. 在JS中字符串String类型被当作基本数据类型,typeof运算符运算结果是“string”
  2. String()函数,将非字符串转换成字符串类型
5.Object类型
  1. Object类型不属于“原始类型/基本数据类型”,属于引用数据类型

  2. JS中的Object和Java中的Object类似,也是所有类的超类

  3. Object类型的“引用”中也是保存了对象的内存地址,该“引用”指向了内存中的对象

  4. JS中也有this关键词,this代表的也是当前对象

  5. Object类型所有的值

    • new Object() Object是内置支持类,类名是“Object”,可以直接拿来使用
      • new Student()Student是自定义的类,类名是“Student”,默认父类是“Object”
    • null null属于“Object”类型
  6. //创建对象,采用new运算符
    var obj = new Object();
    
    //重点:
    //Object类以及所有Object子类都有prototype属性
    //该属性的作用是给类动态扩展属性或函数的
    
    //第一种方式
    function User(a,b){ //可以看作普通函数,可以看作构造函数,可以看作是一个类的定义
      this.uesrname = a;
      this.password = b;
      this.doSome = function(){
        alert(this.username + " do something!");
      }
      this.shopping = function(){
        alert(this.username + " is shopping");
      }
    }
    //这种调用方式,只是将User当作了一个普通的函数来使用(只有压栈动作,不创建对象)
    User();
    //这种方式将User当作一个类,当作一个构造函数来使用,底层会在堆内存中创建对象
    u = new User();
    alert(u.username); //undefined
    alert(u.password); //undefined
    //给User类动态扩展一个login()函数
    User.prototype.login = function(){
        return (this.username == "admin" && this.password = "123");
    }
    //所有的User类型的对象都有login函数
    
    //第二种方式
    Employee = function(empno,ename,sal){
      this.empno = empno;
      this.ename = ename;
      this.sal = sal;
      
      this.work = function(){
        alert(this.ename + " is working!");
      }
    }
    //创建对象
    var e = new Employee(1111,'SMITH');
    //调用方法
    e.work();
    //扩展函数
    Employee.prototype.eat = function(){
        alert(this.ename + "吃饭!");
    }
    

7.String类

1.内置支持类,类名String,父类名Object,也可以new,也可以直接使用
2.JS中提供了两个String,一个String是基本数据类型,一个String是内置支持类
3.基本数据类型String和引用数据类型String共享所有的属性和方法
4.
   var s1 = "yyb"; //基本数据类型
   alert(typeof s1); //String
   alert(s1.length); //3

   var s2 = new String("yyb"); //引用数据类型
   alert(typeof s2); //Object
   alert(s2.length); //3

   /*String内置支持类的常用函数
    - charAt()
       - indexOf()
         - replace()
         - split()
         - substr()
         - substring()
         - toUpperCase()
   */

8.=、==、===的区别

  var v1 = 1;
  var v2 = true;
  alert(v1 == v2); //true

9.null、undefined、NaN的区别

1.null是Object类型,undefined是Undefined类型,NaN是Number类型
2.null和undefined是等价的,值相等
3.NaN和NaN的值不相等

10.void运算符

11.JS控制语句

12.Array类

1.内置支持类,表示一个数组类
2.创建数组
3.二维数组定义和初始化
//1.直接定义并初始化,数量少时可以用
var var1 = [["yyb","1"],["yz","2"],["yyf","3"]];

//2.
var arr = new array(new array(1,2),new array("a","b"));
alert(arr[1][0]);

//3.
var arr = new array();         //先声明一维
for(var i=0;i<5;i++){          //一维长度为5
  arr[i]=new array();    //在声明二维
  for(var j=0;j<5;j++){      //二维长度为5
    arr[i][j]=1;
  }
}
上一篇下一篇

猜你喜欢

热点阅读