初学js的一些基本语法等概念性知识

    技术2025-06-04  33

    软件:多条程序组成,可以实现一定功能

    程序:多条指令组成

    数据结构:储存数据的方式

    机器语言

    计算机语言

    汇编语言

    高级语言(1.编译性语言:整体翻译然后实现 2.解释性语言:单个翻译单个实现)

    程序设计步骤

    1.软件计划

    2.需求分析设计

    3.软件的设计(数据结构,算法)

    4.软件的实现

    5.软件的测试

    6.运营和维护

    错误(报错)

    语法错误:没有按照要求的书写格式来书写.

    逻辑错误:语法正确,能实现,只是实现的东西不对.

    例:需求A+B 实现:A-B

    运行错误:语法和逻辑正确,单程序运行一段时间后报错

    例:1.死循环 2.输出内容增加

    算法

    定义:解决问题的方法和步骤

    含义:解决问题 他是一个过程不是目的 符合开发思维

    特点:

    1.有效性.a除以b .b不能是0

    2.有穷性.解决问题的步骤是有限的

    3.确定性.在判断的时候给定明确目标,不能是模糊的.

    4.零到多个输入

    5.一到多个输出

    流程图

    流程线:带箭头的线

    起止框:椭圆

    输入框:平行四边形

    执行框:矩形

    判断框:菱形

    ECMA script

    ES5 ECMA spcript5 版本

    ES6

    js基础

    js语句
    如何判断一条语句的结束

    判断条件"分号(😉"

    书写格式

    关键词 标识符 运算符 表达式 分号

    ​ 标识符:变量

    ​ 表达式:可以得到结果的公式

    标识符命名规则

    硬性要求

    不能数字开头可以包含:数字,字母,下划线,美元符号($) 不能包含其他字符不能使用Javascript的关键字和保留字大小写敏感

    软性要求

    望文知意
    数据类型
    1.基本数据类型

    数值:Number

    ​ 1.整数

    ​ 2.浮点数

    ​ 3.NaN NaN和任何数据对比都是false,包括自己

    ​ 判断是不是非数字 isNaN(数据,变量);

    字符型:String (有引号就是字符)

    布尔型Boolean: True False

    ​ 可以隐性转换成1和0;在console.log(isNaN(true));中输出false;

    ​ console.log(isNaN(“123”));同上;

    空:null 值为null的时候,返回数值类型为Object 和0比较==时返回false

    isNaN(null)返回true. null会转换为0

    Undefined:undefined 是由null衍生来的,和null比较==时返回true.

    ​ 1.标识符声明了,但是没有赋值 (不是报错)

    ​ 2.输出没有声明的变量的数据类型

    Symbol(对象时讲解)

    2.引用数据类型

    Object

    输出当前标识符数据类型

    控制台输出

    console.log(typeof 标识符);

    终端 node 文件名字(记得后缀名)

    标识符
    变量
    声明变量

    ES5格式

    关键词 标识符 分号

    var 名字 ;

    ES6格式

    let 名字 ;

    const 名字 ;

    var和let/const的区别

    var声明的变量可以重复

    let/const声明的变量不可以重复

    let和const的区别

    let是变量

    const是常量,声明了一定要给值,不然报错.赋值之后不能更改(仅限于基础数据类型,复杂数据类型还是可以变)

    f68=1 会补关键字var

    如果只写f68,没有赋值就不会补.

    let f68=10;

    {

    console.log(f68);

    let f68=3;

    }

    报错未声明f68

    原因:先使用用后声明

    如果在局部作用域中,先使用了一个变量,后面用let或者const才声明该变量则会无视全局变量,生成暂时性死区

    let f68=10;

    {

    f68=5

    console.log(f68);

    }

    console.log(f68);

    输出5和5. f68=5在修改全局变量的值(把10改成了5)

    “+” 如果左右都是数值,则是加法,如果不是那就是拼接

    let f68=1+2+3+“4”+5;

    console.log(f68);

    输出的是645

    字符串前面是算术运算,从字符串开始往后都是拼接.

    任何东西和字符串+都是拼接

    let name=“cwg”;

    let age=20;

    let gender=“男”;

    // console.log(“大家好,我是”+name+",年龄:"+age+",性别:"+gender);

    console.log(大家好,我是${name},今年${age}岁,性别${gender}.)

    内容用``(不按shift的~键)包括,变量${变量}.

    字符串中,空格不合并.

    只有字符串才有.length属性

    纯数字字符串减零可以变为数值

    “0”+数值可以变为字符串

    字符型一般都是true 只有空的" " 和空的’ ’ 和空的``是false(不能有空格)

    数值中只有0和-0和NaN会转换为false 其他的都会转化为true

    null和undefined也是false

    运算符

    算数运算符

    ​ 二元运算符

    ​ +,-,*,/

    ​ %:取余

    ​ // i ** 100 意思为i的100此方.

    ​ 一元运算符

    ​ ++ 自增

    ​ – 自减

    ​ i++先使用,再自增

    ​ ++i先自增,再使用

    ​ f68+=1 意思是f68=f68+1

    三目运算符

    ​ 书写格式:

    ​ 条件?表达式1:表达式2;

    ​ 功能

    ​ 条件为真,执行表达式1

    ​ 条件为家,执行表达式2

    比较运算符 得到的结果永远是布尔(Boolean)值

    ​ 大于>

    ​ 小于<

    ​ 等于==

    ​ 不等于!=

    ​ 大于等于>=

    ​ 小于等于<=

    ​ 绝对等于=== 值和类型都要相等才是true

    ​ 不绝对等于!== 值和类型不相等才是true

    逻辑运算符 得到的是布尔值(Boolean)

    ​ && 并且 一假全假

    ​ || 或者 一真全真

    ​ ! 非 取反

    位运算符

    & |

    安位进行转换

    懂不起 了解

    字符串与字符串比较,安位比较阿斯克码.不会转换

    console.log(“100”>“80”) 返回false 8的阿斯克码大于1的

    数据转换

    let i=number(K);强制转换K为数值.

    let i=parseInt(K);取整(从第一位开始找,一直到不是数字的一位,之前的数字全部获取.

    let i=parseInt(“1 9”)获取到1,如果第一位是空格或者是0,或自动不看

    parseInt特点:

    获取第一个数字到第一个非数字的内容,如果第一位不是数字则返回NaN第一个字符是0或者空格,自动无效如果第一个不是数字,+,-,空格,返回NaN

    使用场景:

    取出单位 如:10000$.

    取浮点数

    let j=“123”;

    let k=parseFloat(j);

    console.log(k.toFixed(3));

    toFixed(3)保留三位小数

    Math.ceil()向上取整,取最近的大于我的整数(进一).

    Math.floor()向下取整(舍一)

    Math.round()四舍五入

    let i=String(K);强制转换K为字符串.

    let i=K.toString();K转换为字符串,括号中取值2-32.(多少进制) 默认是10进制

    null和undefined不能使用toString 属性

    快捷转换

    字符(纯数字)- 0 (转Number) 如果不是纯数字会转换为NaN

    非字符+""(String)

    !!非布尔 转换为布尔(Boolean)

    条件语句

    适用场景

    进行条件判断,根据不同的结果来执行相应的代码.

    if语句

    if(条件){

    条件为真时执行的代码块

    }else{

    条件为假时执行的代码块

    }

    switch语句

    书写格式

    switch (匹配值){

    case 表达式:

    ​ 执行的代码块

    ​ break;

    case 表达式:

    ​ 执行的代码块

    ​ break;

    case 表达式:

    ​ 执行的代码块

    ​ break;

    default:(没有匹配值时执行)

    ​ 执行的代码块

    }

    工作原理:

    匹配值与表达式去匹配(全等匹配)

    匹配成功,则执行相应的的代码块

    由于匹配成功后会一直往下执行下面的代码块直到switch最后,所以加break.

    循环语句

    使用场景

    执行多次代码块,当条件不满足时,结束循环

    书写格式:

    while(条件){

    代码块

    }

    先判断后执行

    do{

    代码块

    }while(条件)

    先执行 后判断(至少执行一次)

    break:终止当前循环,后面的都不执行

    continue:结束本次循环,直接进行下一次

    数据结构

    数组

    一个标识符可以储存多个数据,可以不同类型

    创建数组

    字面量创建(声明)

    格式 关键字 标识符 赋值符号(=) 中括号

    let f68 = [];

    构造函数创建

    关键字 标识符 赋值符号 new Array();

    let f68 = new Array();

    使用数组的书写方式:名字[下标]

    下标从0开始

    f68[0]代表f68数组中的第一个值

    下标超出就会返回undefined

    名字.length 返回数组长度

    属性和方法的区别看有没有()小括号;

    查找数组中是否有某个值

    名字.includes(值); 有返回true 没有返回fleas.

    添加值

    名字.push(值,值,值);可以在数组最后添加多个值

    名字unshift(值,值,值);前面

    数组.concat(添加内容)

    添加的内容可以是数组

    删除

    名字.pop();只能删除最后一个值

    名字.shift;只能删第一个

    修改

    f69=f68.slice(值,值)

    不会修改原数组

    可以只写一个值,一个值时代表此下标开始往后取完包括开始值

    一个值时负数时,是从后往前取多少个值

    -3 就是从后往前取3个值

    两个值是之间的值,包括初始值,不包括结束值

    两个负值,先把值和数组长度相加再取值.

    不满足条件时,获取不到任何值.返回[]

    f69=f68.splice(值,值,值)

    会修改原数组

    给两个值,

    ​ 第一个值代表起始位置的下标

    ​ 第二个代表个数

    给三个值

    ​ 第一个值代表起始位置下标

    ​ 第二个:

    ​ 为0时代表插入,插入到起起始位置的前面,修改第二个值后面的内容

    ​ 为1时代表修改,修改起始位置的内容为第二个值后面的内容

    ​ 不是0和1,代表从起始位置取多少个值修改为第二个值后面的内容

    ​ 第三个:

    ​ 需要插入或修改的内容

    ​ 第N个值:

    ​ 需要插入或修改的值

    slice和splice返回的都是数组.因为不知道有多少个值

    使用场景,两个一起用,看返回的值一不一样查看有没有重复的值

    名字.indexOf(值);从前往后找到第一个为该值的值,返回下标

    名字.lastindexOf(值);从后往前找

    他俩是全等匹配.

    他俩找不到NaN

    include()可以找到NaN
    解构

    把复杂数据类型分解为简单数据类型

    要求:赋值符号左右的类型相同

    遍历数组

    打印下标(键)

    for(*let* indexNum in f68){ console.log(f68(indexNum)); }

    打印具体的每一个值(值)

    for(*let* indexNum of f68){ console.log(indexNum); } for(*let* i=0;i<=f68.length-1;i++){ console.log(f68[i]); }
    判断当前标识符是不是数组
    Array.isArray(f68) f68 instanceof Array
    冒泡排序
    // 循环的次数 for (*let* i = 0; i < f68.length-1; i++) { //因为每比较一次,就能确定一个数的位置,所以条件为-i,然后遍历剩下的每个数 for (*let* j = 0; j < f68.length - i; j++) { ​ if (f68[j] > f68[j + 1]) { ​ [f68[j], f68[j + 1]] = [f68[j + 1], f68[j]]; ​ } } }
    选择排序
    //遍历每个数拿来比较,最后一个不用取,因为内循环能取到,取到最后一个没意义 for (*let* i = 0; i < f68.length - 1; i++) { for (*let* j = i+1; j <= f68.length - 1; j++) { ​ if (f68[i] > f68[j]) { ​ [f68[i],f68[j]]=[f68[j],f68[i]]; ​ } } }

    倒序排列(倒过来,没有排序)

    f68.reverse()

    从大到小排列

    f68.sort((*a*,*b*)*=>b*-*a*)

    从小到大排列

    f68.sort((*a*,*b*)*=>a-*b*)

    安位比较排列

    f68.sort()

    扩展运算符(…)

    let* f68="ABC"; *let* f69=[...f68]; console.log(f69);

    不用…输出[“ABC”]用了输出(“A”,“B”,“C”)

    split(" ")

    以引号中间的东西为分隔符取值.没有分隔符就每个字符分别取

    字符串会转为数组

    let* f68="2000,1,2"; *let* f69=f68.split(",") console.log(f69);
    数组转字符串

    str=数组.join

    数组.concat(添加内容)

    添加的内容可以是数组

    集合

    let f68=new Set{};

    可以存多个值,但是不能重复,重复的条件时全等.

    属性和方法
    属性

    .size 长度

    方法

    添加括号里面写具体的值

    .add()

    删除括号里面写具体的值

    .delete()

    遍历出集合中的每一个值

    for…of

    获取值

    .values

    获取键

    .keys

    获取键值对

    .entries

    使用场景,去除数组的重复

    let* arr=[1,1,2,2,4,5,7,8,"8"]; *let* f69=new *Set*(arr); arr=*Array*.from(f69); console.log(arr)

    函数

    函数:可以实现一定的功能,(封装)

    创建

    字面量创建

    ​ function 名字(){

    ​ 代码块

    }

    名字不要以大写字母开头

    function f68(){ ​ console.log(`123456`) }

    函数表达式(匿名函数表达式)

    let 名字 = function(){代码块}

    let f68=function(){ ​ console.log(`123456`) }

    构造函数(一般不用)

    let 名字 =new function(

    ’ 代码块 ',

    ’ 代码块 ’

    );

    写成字符串.能识别是js代码.

    调用函数

    名字();

    返回值

    return ;

    每个函数都有返回值,没给就是undefined;

    参数

    形参

    创建函数时的参数

    实参

    ​ 调用时的参数

    Processed: 0.011, SQL: 9