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

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

程序:多条指令组成

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

机器语言

计算机语言

汇编语言

高级语言(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语句
如何判断一条语句的结束

判断条件"分号(😉"

书写格式

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

​ 标识符:变量

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

标识符命名规则

硬性要求

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

软性要求

  1. 望文知意
数据类型
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 文件名字(记得后缀名)

标识符
变量
  1. 声明变量

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特点:

  1. 获取第一个数字到第一个非数字的内容,如果第一位不是数字则返回NaN
  2. 第一个字符是0或者空格,自动无效
  3. 如果第一个不是数字,+,-,空格,返回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:结束本次循环,直接进行下一次

数据结构

数组

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

创建数组

  1. 字面量创建(声明)

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

    let f68 = [];

  2. 构造函数创建

    关键字 标识符 赋值符号 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)

函数

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

创建
  1. 字面量创建

    ​ function 名字(){

    ​ 代码块

    }

    名字不要以大写字母开头

function f68(){

​	console.log(`123456`)

}
  1. 函数表达式(匿名函数表达式)

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

    let f68=function(){
    
    ​	console.log(`123456`)
    
    }
    
  2. 构造函数(一般不用)

    let 名字 =new function(

    ’ 代码块 ',

    ’ 代码块 ’

    );

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

调用函数

名字();

返回值

return ;

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

参数

形参

创建函数时的参数

实参

​ 调用时的参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值