JS



Table of Contents generated with DocToc

1、JS 简介

1.1、什么是JS

JavaScript 是种经量级的脚本语言,也是一种嵌入式 (embedded) 语言,是一种面向对象模型语言,简称 JS

1.2、如何实现 JS 并运行

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <!-- JS 外部 -->
    <script src="./hello.js"></script>
    <title>Document</title>
</head>


<body>
    <!-- JS 行内 -->
    <input type="button" value="按钮" onclick="alert(1233)" />

    <input type="button" value="按钮" onclick="msg()" />

    <!-- JS 的嵌入 -->
    <script>
        var a = 2;
        var b = "2";
        console.log(a == b) //true   只比较值不比较数据类型
        console.log(b === a) //false 比较值和数值类型
    </script>
</body>

</html>
function msg(){
    alert("Hello world")
}

1.3、变量的声明

var a = 100

2、JS 的数据类型

2.1、JS 的数据类型

Number、Boolen、String、undefined、null、Object

2.2、JS 类型的判断

  • 表达式 typeof(xx)
  • 变量 typeof xx

2.3 、数据类型的转换

2.3.1、转化为 String

  • xx.toString()
  • String(xx)

2.3.2、转化为 Number

c = Number("c")
var c = Number("h34");  //NaN
var d = Number(null);  // 0
var d = Number(underfind); //NaN

console.log(parseInt("")) //NaN
console.log(parseInt(" ")) //NaN
console.log(parseInt("1.23df")) //1
console.log(parseInt("1.7")) //1
console.log(parseInt(null)) //NaN
console.log(parseInt(undefined)) //NaN

var a = parseFloat("1.23df");  //1.23
var b = parseFloat("1.3.4.5"); //1.3
var c = parseFloat("h34"); //NaN
var d = parseFloat(unll);  //NaN
var d = parseFloat(underfind); //NaN

2.3、注释

  • 单行注释 //
  • 多行注释 /* */

3、操作符和运算符

19222327-c4b49067133c4555.jpeg

3.1、算数运算符 + - * / %

3.2、逻辑运算符

逻辑运算符又称为布尔运算符,即求两个值是真还是假,或者取反
优先级 先运行&& 再运行||

<script>
    var a = 1;
    var b = 2;
    var c  = 0;

    //在 JS 中,逻辑运算的结果决定于子表达式的值,于短路比较相似
    console.log(a || b) //1
    console.log(b || a) //2
    console.log(a && b) //2
    console.log(b && a) //1
</script>

3.3、比较运算符

  • > 大于;
  • < 小于;
  • >= 大于等于;
  • <= 小于等于;
  • == 判断两个值是否相等;
  • != 两个值不相等;
  • === 全等于;
  • !== 不全等

3.4、赋值运算符 = += -= /= *= %=

3.5、运算符的优先级

    1. ()优先级最高
  • 2.一元运算符(数字前面的) ++ -- !
  • 3.算数运算符(与数学中的运算先后一致) 先* / % 后+ -
  • 4.关系运算符 > >= < <=
  • 5.相等运算符 == != === !==
  • 6.逻辑运算符 先&& 后||
  • 7.赋值运算符 =

4、语句

  • if
  • switch case
  • while
  • do while
  • break
  • continue

5、数组

5.1、数组的简介

将多个元素(通常是同一类型)按一定顺序排列放到一个集合,这个集合称为数组

5.2、数组的创建

var a1 = [];//空数组
var a2 = [1,”d”];
var a3 = new Array()
var a4 = new Array(1,2,3,"45");
var a5 =[6,7,a1,”t”] //二维数组
var a6 =[6,7,a5,”t”] //三维数组

6、函数

6.1、匿名函数和自调用函数

  • 匿名函数,函数没有名字
  • 自调用的匿名函数,立即执行 主要是用来控制作用域,防止全局变量的污染
  • 函数也是一种数据类型,可以作为参数,也就是高级函数 typeof method = function
function msg(){
    alert("Hello world")
}

function methodName(){} //关键字声明

var method= function(){
} // 表达式声明 也就是匿名函数

function methodName(size) //参数

function methodName(start,end) //参数

function sum(num1,num2){ //函数的返回值
    return num1 + num2
}

var sum = sum(1,2) //函数的调用

var txt = methodName() //如果函数中没有返回值 就是 undefined

method() 匿名函数的调用

(function(){
    alert()
})() //立即执行函数 或自动的匿名函数


function f1(){
    console.log(222)
}

function f2(k){ //高级函数的调用
    k()
}

f2(f1)


function f3(){
    a = 10
    var f4 = function(){
        alert(a)
    }
    return f4
}
f3()() //多个括号调用函数 闭包

6.1 作用域和变量

  • 全部变量和局部变量
<script>
    var a1 =  100  // 全局作用域
    function method(){
        var a2 = 10 //局部作用域
    }
</script>

  • 变量提升
    因为代码的执行分为两个阶段
    • 解析(编译)阶段 :语法检查、变量以及函数的声明
    • 运行阶段:变量的赋值和代码的执行
<script>
    console.log(a) //undefine
    var a =  100 
</script>
<script>
    console.log(a) // Uncaught ReferenceError: a is not defined at xx.html
    // var a =  100  
</script>
var a=12;

function abc(){
alert(a); //undefine
var a =10;
}

abc();
console.log(a);
function a(){
console.log(‘aaaa’)

}

var a = 1;
console.log(a)
// 如果变量和函数同名了,必须注意,函数的声明会替换变量声明
// 不管函数在变量的前面还是后面,赋值总会把前面的声明替换。

7、对象

7.1 对象的声明和使用

<script>
    // 字面量声明对象
    var obj = {};
    var obj2 = {
         name: '张三', age: 12, height: 190, run: function () {
            console.log("I'm running")
        }
    };

    //实例化声明变量
    var obj3 = new Object();

    // 实例化自定义函数方式声明变量
    function Fun() {

    }
    var f = new Fun();
</script>

7.2 this 的使用

运行在那个对象下就指向那个对象

var obj2 = {
    name: '张三', age: 12, height: 190, run: function () {
        console.log("I'm running")
    },
    
    showAge:function(){
        // console.log("I am " + age + " years old") // Uncaught ReferenceError: age is not defined
        console.log("I am " + this.age + " years old")
    }
};
obj2.showAge()
function method(){
    console.log(this) //这个 this 是最顶层的 Windows 对象
}

7.3 对象的遍历和删除

<script>
    var obj = {
        name: '张三', age: 12, height: 190, run: function () {
            console.log("I'm running")
        },
    }
    
    for(item in obj){
        console.log(obj[item])
    }
</script>
<script>
   var obj = {name:'张三',age:15,sex:"男"}
   console.log(obj) // {name: '张三', age: 15, sex: '男'}
   
   delete obj.age // age 属性的删除
   console.log(obj) // {name: '张三', sex: '男'}
</script>
<script>
   var arr = [1,2,3,4,5,6,7]
   for(index in arr){
       console.log(arr[index])
   }
</script>

7.4 包装对象

原始类型:数值、字符串、布尔类型
原始值可以自动当做对象来调用,可以调用各种属性以及方法
如果包装队形使用完成,会立即销毁

7.5 内置标准库

  • Math 对象 对数据的操作 取绝对值、随机数等
    获取 n - m 之间的值 Math.random * (m - n) + n
  • 日期对象 Data
  • 数组对象
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容