javaScript

编程

利用程序设计语言编写程序代码
计算机程序:计算机所执行的一系列指令集合
计算机语言

  1. 机器语言,计算机执行
  2. 汇编语言
  3. 高级语言,包括很多编程语言,如C,JS
    标记语言:不向计算机发出指令,常用于格式化和链接,存在时
    编程语言:用来控制计算机的一系列指令
  4. 汇编语言
  5. 高级语言,包括很多编程语言,如C,JS
    翻译器:(将源代码变成及计算机语言)
    在这里插入图片描述

计算机基础

由硬件和软件组成
在这里插入图片描述

2.2数据存储

所以数据、程序是以二进制存储到硬盘

2.3数据存储单位

在这里插入图片描述

2.4 程序运行

打开某个程序时,先从硬盘中把程序代码加载到内存中
CPU执行内存的代码(CPU快,内存是电,硬盘是机械)

JavaScript

初识

历史

在这里插入图片描述

是什么

在这里插入图片描述
脚本语言:一行一行,翻译一行,执行一行

作用

在这里插入图片描述
1.输入时即判断表单是否合格
HTML/CSS标记语言
JS编程类语言

浏览器执行JS简介

浏览器分为两部分:渲染引导(内核,解析HTML和CSS)+JS引擎(读取网页中的JavaScript代码)
浏览器本身不会执行,通过内置JS引擎,逐行解释转换成机器语言,然后计算机去执行

JS组成

在这里插入图片描述
在这里插入图片描述

DOM提供的接口可以对页面的各种元素进行操作(大小、位置、颜色等)
BOM与浏览器窗口进行互动的对象结构,可以操作浏览器窗口

JS

行内、内嵌、外部

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 内嵌式 -->
    <script>
        alert('我是人');
    </script> 
    <!-- 外部JS -->
    <script src="my.js">
    </script>
</head>
<body>
    <!-- 行内式,alert弹出框,里面单引号,外面双引号 -->
    <input type="button" value="xxc" onclick="alert('aiguo')">
</body>
</html>

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
注意在这里插入图片描述

在这里插入图片描述
外部JS中间不可以写代码

JS注释

//单行, ctrol+/
/duoahng/ shift+alt+a

JS输入输出语句

在这里插入图片描述

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 输入框-->
    <script>
        // 输入框
        prompt('输入年龄');
        // alert展示给用户
        alert('哈哈哈哈');
        console.log('程序员看到的');
    </script> 
</head>

在这里插入图片描述
在这里插入图片描述

变量

概述

本质:变量是在内存中申请的一块用来存放数据的空间

使用

1、声明 2、赋值

var age;
age=10;//数字不用加引号

var是一个JS关键字,用来声明变量
声明变量加赋值-变量的初始化

var name='pink'
<script>
        var name=prompt('输入名字');
        alert(name);
    </script>

属入名字,同时弹出名字的值

变量语法扩展

1、更新语法

在这里插入图片描述

2、同时声明多个变量

中间逗号,最后分号

<script>
        var name='xxc',
        age=18,
        address='cq';
    </script>

3、声明变量的特殊情况

  1. 只声明不赋值,结果undufined
  2. 未声明,未赋值,直接使用,会被报错
  3. 不声明,直接赋值。可以的(变成全局变量)

变量命名规则

在这里插入图片描述
$和_可以做变量开头,中间不能有空格

<script>
        var c1='xxc',
        t,
        c2='cq';
        t=c1;
        c1=c2;
        c2=t;
        console.log(c1);
        console.log(c2);
    </script>

在这里插入图片描述

数据

简单数据类型简介

数据和存储空间有关系
JS是一种弱类型/动态语言。数据类型由变量的数据类型来判断
在这里插入图片描述

简单数据类型

在这里插入图片描述

数字型进制

前面加0表示八进制(0~7)
输出时默认格式为十进制
前面加0x表示十六进制(09,af)

数字型范围

在这里插入图片描述
在这里插入图片描述

isNaN()

判断是否为数字,如果是,则是false;否则true

字符串型

里面有引号
在这里插入图片描述
引号嵌套,外双内单/外单内双在这里插入图片描述

字符串转义字符

在这里插入图片描述

字符串长度

属性lengthvar ch='xxc';alert(ch.length);

字符串拼接

数值相加,字符相连

 <script>
        console.log('ss'+true);//最后结果是字符串
        console.log(12+12);//结果24
        console.log('12'+12);//结果1212
    </script>
字符串拼接加强

变量单独相加,变量不能加引号,加引号会变成字符串
在这里插入图片描述
在这里插入图片描述

简单交互效果
  1. 用户输入
  2. 程序内部处理
  3. 输出结果

布尔型Boolean

值:true和flase
布尔型和数字运算,是数值运算
true=1,false=0
数字和null运算,null 变成0,进行数值运算
var flag=true; alert(true+1);//结果为2

Undefined

变量声明未赋值,

null空值

 <script>
        var flag=true;
        alert(true+1);//结果为2
        // undefined
        console.log(str);//或者var str=undefined
        console.log(str+'pink');//结果是undefinedpink
        console.log(str+1);//和数字相加结果是NaN不是数字
        // null
        var s=null;
        console.log(s+'pink');//nullpink
        console.log(s+1);//1
    </script>

获取变量数据类型

typeof ,

<script>
        var flag=true;
        console.log(typeof flag);
   </script>

在这里插入图片描述
在这里插入图片描述
通过prompt取过来的值是字符型
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
字符串型是黑色,蓝色数字,深一点布尔型,undefined和null是浅灰色

数据类型转换

  • 转化成字符串类型在这里插入图片描述
<script>
        var age=18;
        // 1
        var str=age.toString();
        console.log(String(age));
        // 2
        console.log(typeof age);
        console.log(typeof str);
        // 3
        console.log(age+'');
  • 数字型
    在这里插入图片描述
<script>
        console.log(parseInt('3.14'));
        console.log(parseFloat('3.14'));
    </script>

在这里插入图片描述

  • 布尔型
    Boolean(‘’);
    代表空、否定的值会被转换成false,如‘’、0、defined、NaN、null、undifined
    其它都是true

解释型语言和编译型语言

在这里插入图片描述

运算符

算数运算符

+、-、*、\、%
尽量避免用浮点数直接进行运算和比较(精度有误差)
在这里插入图片描述

String参与的数据运算

只要有字符串+任意类型=拼接之后的字符串

  1. 和Boolean类型
    若字符串有非数字字符串,除了加号,其它运算符输出结果为NaN;字符串为纯数字时,其它为数值运算
  2. 和undefined
    除了+,其它结果都是false
  3. 和Null
    和Boolea类型一样

总结:
字符串数值运算,+直接拼接。其它,undefined结果为false;再其它,纯数字字符串数值运算,不纯结果通通为NaN

比较运算符

!==表示不全相等在这里插入图片描述

等号符号,是==默认转换数据类型,会把字符串的数据转换成数字型(只要求值)。

console.log(18=='18');//true

完全等于===

console.log(18==='18');//false

数值参与的混合比较运算

  1. 数值和String比较运算
    字符串为纯数字,转换成Number类型比较,字符串包含字母,输出结果都为false
  2. 数值和undefined进行比较时
    结果都是false(这个比较直接)
  3. 数值和布尔型比较运算
    布尔转换成Number类型
  4. Number和Null比较
    布尔转换成Number类型

String参与的比较运算

  1. 和Boolean
    若字符串有非数字字符串,输出结果为false;纯数字,转换为数值进行比较
  2. 和undifined比较
    输出结果都是false
  3. 和null比较运算
    同Boolean

总结:
比较运算中,只要有undifined结果都是false;字符串参加的,纯数字数值比较,不是的结果直接为false

逻辑运算符

用来进行布尔运算的运算符,其返回值也是布尔值
&&、||、!(存在逻辑中断)

数组

数据的集合

创建数组

== new创建数组==

var arr =new Array();//创建一个空的数组
var arr=new Array(2);//创建长度为2的数组
var arr =new Array(2,3);//创建[2,3]的数组

利用数组字面量创建数组

<script>
        var arr=[];//创建空数组
        var arr1=[1,2,'pink',true];//里面可以放任意类型数据
    </script>

获取数组的元素

== 数组的索引==
arr[0]=1

数组的方法

pop()删除并返回数组的最后一个元素
push() 向数组末尾添加一个或更多元素,并且返回新的长度
shift() 删除并且返回数组的第一个元素
unshift() 向数组的开头添加一个或更多元素,并返回新的长度

<script>
    var char=[1,2,3,4];
    console.log(char.pop());//删除并返回数组的最后一个元素
    console.log(char);
    </script>

在这里插入图片描述

<script>
    var char=[1,2,3,4];
    console.log(char.push(5,5));//在末尾增加一个元素,并返回新的长度
    console.log(char);
    </script>

在这里插入图片描述

<script>
    var char=[1,2,3,4];
    console.log(char.shift());//删除并且返回第一个元素
    console.log(char);
    </script>

在这里插入图片描述

<script>
    var char=[1,2,3,4];
    console.log(char.unshift(2,4));//添加并且返回新的长度
    console.log(char);
    </script>

在这里插入图片描述
总结
有p的都是在数组后面操作,删除返回值为被删的元素;新增返回值为新的长度

sort()数组排序,数字从小到大,字母按照ASCII码
arr.reverse()表示将数组逆序

<script>
    var arr=[1,3,2,4];
    arr.sort();
    console.log(arr);
    //同理:arr.reverse()表示将数组逆序
    </script>

在这里插入图片描述

splice()是拼接的意思们可以删除或者插入,接受参数最少两个及以上
splice(起始位置,删除元素个数,插入元素)

第二个元素
. 为0时,表示只有插入元素
. 不为0且只有两个参数时,表示只有删除操作
. 不为0且有三个及其上个参数时,表示既有删除也有插入操作

<script>
      var arr = ["a", "b", "c", "d"];
      arr.splice(2, 1); //删除一个元素,从第二个起,不是第二个(从下标2开始),删去第二个。["a", "b", "d"]
      var remove = arr.splice(2, 1); //值为'b'(错误),因为这里在["a", "b", "d"]基础上再次调用了两次splice方法,所有remove值为d
    </script>
arr.splice(2,1,'e','f')//在第二个位置上删去了'c',插入'e','f'.["a", 'e','f',"b", "d"],这里splice的返回值为'b'

slice()截取原数组中的一段,silce()接受一个或两个参数,第一个表示截取开始的位置,第二个参数表示截取的结束位置区间是左闭右开[),不包括结束位置的下标。只有一个参数,则从位置开始一直截取到数组结束

    <script>
      var arr = ["a", "b", "c", "d", "e"];
      var newArr=arr.slice(2, 4); //结果为["c", "d"],一定要定义一个新数组才行
      console.log(newArr);
    </script>

split()用特殊字符分割字符串
join()用特殊字符拼接字符串

<script>
      var arr = ["acc", "b", "cdd", "d", "e"];
      var newArr1=arr.join('%'); //字符串是分散的,用%将它们拼接到一起
      console.log(newArr1);//acc%b%cdd%d%e
      var str="xxvd-fwe-fw";
      var newArr2=str.split("-"); 
      console.log(newArr2);//Array(3) [ "xxvd", "fwe", "fw" ]
    </script>

字符串方法

charAt()

<script>
      var str="abcfggr";
      var n=str.charAt(3);//返回下标3的值
      console.log(n);
    </script>

concat

<script>
      var str1="abcfggr";
      var str2='1223';
      var n=str1.concat(str2);
      console.log(n);//abcfggr1223
    </script>

字符串后面自动加\0,字符数组不加

indexOf()返回字符串值在字符串首次出现的位置

<script>
      var str1 = "12363545123";
      var n1 = str1.indexOf("123"); //0
      var n2 = str1.indexOf("123", 5); //从第五个位置开始找"123",10
      console.log(n1);
      console.log(n2);
    </script>

includes()判断是否包含

<script>
      var str1 = "12363545123";
      var n1 = str1.includes("123"); 
      console.log(n1);//true
    </script>

repeat()字符串复制指定次数

<script>
      var str1 = "abc";
      var str2 = str1.repeat(2); 
      console.log(str2);//abcabc
    </script>

replace()

<script>
      var str1 = "abc1234";
      str1=str1.replace("a","d");
      console.log(str1);//dbc1234
    </script>

match方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。返回数组

search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符
串。返回与指定查找的字符串或者正则表达式相匹配的 String 对象起始位置。

slice()提取字符串某个部分,并以新字符串返回

<script>
      var str1 = "abc1234";
      var str2 = str1.slice(2,4); 
      console.log(str2);//z左闭右开c1
    </script>

substring()提取字符串中介于两个指定下标的字符

<script>
        var str1 = "abc1234";
        var str2 = str1.substring(2,-4); 
        console.log(str2);//若第二个元素未负数,从0开始,ab
      </script>
<script>
        var str1 = "abc1234";
        var str2 = str1.substring(2); 
        console.log(str2);//从2到后面结束c1234
      </script>
<script>
        var str1 = "abc1234";
        var str2 = str1.substring(2,2); 
        console.log(str2);//<empty string>
      </script>

split()把字符串分割成字符数组
split方法

<script>
        var str1 = "ab c1 23 4";
        var str2 = str1.split(" ",3); 
        console.log(str2);//Array(3) [ "ab", "c1", "23" ]
    </script>

trim()删除头尾空白符,空白符包括:空格、制表符tab、换行符等
trim()

<script>
        var str1 = "    ab c1 23 4       ";
        var str2 = str1.trim(); 
        console.log(str2);//ab c1 23 4
    </script>

遍历数组

从头到尾访问一遍,可运用str.length
创建一个空数组,var str=‘’;

数组中新增元素

  • 修改length长度
<script>
        var arr=[];//创建空数组
        var arr1=[1,2,'pink',true];//里面可以放任意类型数据
        arr.length=5;//扩容,里面默认undefined
        arr[3]='xxc';
        arr[5]='xj';
        arr[0]='0';//替换数组元素
        arr='吃饭';//以前数据全部替换
    </script>
<script>
        var newArr=[];//创建空数组,newArr.length=0
        var arr1=[1,2,'pink',true,10];//里面可以放任意类型数据
       for(var i=0;i<arr.length;i++)
       {
        if(arr[i]>=10)
        newArr[newArr.length]=arr[i];
       }
       console.log(newArr);
    </script>

在这里插入图片描述
在这里插入图片描述

函数

使用

声明函数+调用函数

<script>
       function 函数名(){
        //函数体
       }
    //function声明函数的关键字,函数名一般是动词
       function sayHi()
       {
        console.log('hi!');
       }
    //  函数调用,格式函数名();
    sayHi();
    </script>

函数的封装

把一个或多个功能通过函数的方式封禁起来,对外值提供一个简单的函数接口

函数的参数

形参和实参
在这里插入图片描述
如果实参个数多于实参个数,依次取到形参的个数
实参个数小于形参个数,多的那个形参得到的值为undefined,
在这里插入图片描述

函数的返回return

把函数结果返回给调用者,

  <script>
       function getsum(a,b)
       { 
        var sum=a+b;
        return sum;
       }
       console.log(getsum(1,2));
    </script>

只能返回一个值

 return a,b;//返回结果为最后一个值
 return [a,b,a+b];//返回了一个数组

函数有return返回return后面的值,没有返回undefined在这里插入图片描述

arguement的使用

不确定有多少组参数传递时,可以用arguement来获取。是当前函数的内置对象,arguement存储了传递的所有实参
展示形式是一个伪数组,具有length;按照索引方式存储
在这里插入图片描述
在这里插入图片描述
没有数组的一些方法pop()

函数调用另外一个函数

在这里插入图片描述

函数的两种声明方式

前面是利用函数关键字,
第二种:var 变量名=function(){}

<script>
      var fun=function()//匿名函数,这里fun是变量名,变量存的是值
      {
        console.log('我是函数表达式');
      }
      fun();
   </script>

函数表达式也可以参数传递

<script>
      var fun=function(a)//匿名函数,这里fun是变量名,变量存的是值
      {
        console.log('我是函数表达式');
        console.log(a);
      }
      fun('worren');

作用域

链式查找,逐渐上级上级一层一层往上找

JS对象

概念

对象是一个具体事物,是属性和方法的集合,万物皆对象
属性:事物特征(常用名词)
方法:事物行为(常用动词)

1、创建对象(object)

1、利用字面量

对象字面量:{}

 <script>
      var object={
        uname: 'xxc',
        age: 19,
        sex: 'nv',
        sayHi: function() {
            console.log('hi!');
        }
      }
      //调用对象1,采用对象名.属性名
      console.log(object.uname);
      //调用对象2,对象名['属性名']
      console.log(object['age']);
      //调用对象的方法
      object.sayHi();
   </script>
变量、属性

变量、属性都是保存数据,变量单独声明并赋值

2、利用new Object创建对象
<script>
      var obj=new Object();
      obj.uname='xxc';
      obj.sex='nv';
      obj.sayHi=function()
      {
        console.log('hi');
      }
   </script>
3、利用构造函数创建对象

就是把对象里面一些相同的属性和方法抽象出来封装到函数里面
语法格式 function 构造函数名(){ this.属性=值; this.方法=function(){} } new 构造函数名();//调用构造函数

 //构造函数首字母大写
      function Star(uname,age,sex){
        this.name=uname;
        this.age=age;
        this.sex=sex;
      }
      var ldh=new Star('ren',18,'nan');//实参传值,ldh就是一个对象了
      var dmn=new Star('xxc',19,'nv');
         </script>
function Star(uname,age,sex){
        this.name=uname;
        this.age=age;
        this.sex=sex;
        this.sing=function(sing){
            console.log(sing);
        }
      }
      var ldh=new Star('ren',18,'nan');//实参传值,ldh就是一个对象了
      var dmn=new Star('xxc',19,'nv');
      ldh.sing('binyu');
      console.log(dmn.name);
         </script>
 **new**
 1. 构造函数在内存中创建了一个空的对象,
 2. this就会指向刚才创建的空对象,
 3. 执行构造函数里面的代码,给这个空对象添加属性和方法,
 4. 返回这个对象

遍历对象

for ...in
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/6f4783e7c97242c3a2729628fda5e3b8.png)
<script>
     var obj={
        name: 'xxc',
        age: 19,
        sex: 'nv'
     }
    //  for(变量 in 对象),k是变量,不加引号
     for(var p in obj){
        console.log(p);//得到属性名
        console.log(obj[p]);//得到属性值
     }
      </script>
```![在这里插入图片描述](https://img-blog.csdnimg.cn/a903715e10994450a54fac0e35cd98db.png)

# 同步模式和异步模式
单线程模式(负责执行代码的只有一个,同时只能执行一个任务)
任务的执行模式分为两种
## 同步模式
代码任务依次执行
## 异步模式
1. 回调函数
setTime(()=> {
console.log("nihao");
},3000);
等到预定时间执行
2. Promice
发起请求获得服务器数据,动态更新页面内容,用一种链接结构将多个异步操作串联起来
同步,压栈,执行,打印,弹栈
调用栈![在这里插入图片描述](https://img-blog.csdnimg.cn/3d2e0b83b4a144c2b5fe34db48d029a7.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/bd10ce410245405aa5b60a312f65e57a.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/b7f31ee0cd044fa59e7bfddb810decb1.png)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值