IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Javascript 基础语法学习笔记 -> 正文阅读

[JavaScript知识库]Javascript 基础语法学习笔记

一,初识
1:引入js

(1)外联

<script src="/js/flexible.js"></script>

?(2)内联
?

   <script>
        //内联
    </script>

(3)行内

<div onclick="alert('nihao')"></div>

2,注释

?????????//单行?

?????????/*多行*/

3.警告框

?????????????alert();警告框

????????????confirm();选择框

????????????prompt();输入框

????????????console.log();控制台输出

二,变量

1,变量是程序在内存中申请 的一块用来存放数据的空间

2,使用:


声明变量??var?age

赋值??????age=18;

变量的初始化??var?age?=?18;??(声明并且赋值称为变量的初始化)

3语法扩展

更新变量

var?age=?18;

??age?=?20;



声明多个变量

var?age?=?18,name?=?‘’佩奇’’;

4变量命名规范

4.1由字母,数字,下划线,$组成

4.2严格区分大小写

4.3不能以数字开头,不能使用关键字,保留字

4.4遵守驼峰命名法

5临时变量

var?temp?;

var?app1?=?10;

var?app2?=?20;

temp?=?app1;

app1?=?app2;

app2?=?temp;

temp就像是一个中介,暂时储存临时变量

三 数据类型

1????

js 变量的数据类型,是由js引擎根据 = 右边变量的值(字面量)的数据类型来判断的

2,js是动态语言,变快的数据类型可以变化的

例:


var?age?=?18;??

?age?=?"佩奇";

3基本数据类型
?

number?数字型

boolean?布尔值

string??字符串

undefined?未定义

null??空值

3.1 ?number

包含整数,小数,负数

八进制用 ?0 表示

十六进制 ?0x

Number.MAX_VALUE???最大值

Number.MIN_VALUE???最小值

Infinity?无穷大

-Infinity?无穷小

NAN?(not?a?number)?不是一个数字

is??NAN?();判断是否数字???false?是数字????true不是数字类型

3.2 string

字符串引号嵌套 ?外单内双 ?外双内单

\转义字符 ???\n 换行

字符串长度 ?length

字符串拼接 ??+ ????如 ;‘1’+‘2’ ??返回值‘12’

字符串和任何数据类型 ?+ 都会转换为字符串

3.3boolean

布尔型有两个值,true false 其中true 表示真,false假

true当 1 计算 , false当0 计算

4 undefined 和 null

Undefined 和 nan 和数值 相加 为NAN

Null 和数值相加 返回相加的数值

5 typeof 获取变量类型

?typeof + 变量

6字面量

字面量是一种直接出现在程序中的数据值

7 转换为字符串

tostring()

string()

+

8转换为数字型
?

parselnt();

parseFloat();

Number();

js隐式转换????-???*??/

9 转换为布尔型

'',?0?,NAN?,undefined,null??代表为空,否定的值转换为false?

其余转换都为?true

10 ?标识符

标识符是就是为 变量,函数,参数取的名字

关键字

js 本身已经使用的单词

保留字

js为未来预留的可能会用到的单词

四 运算符

4.1运算符也被称为操作符 ,是用于实现赋值比较和执行算数运算功能的符号

4.2算数运算符

+?-?*?/?%

4.3表达式 和返回值

由数字 运算符,变量等组成的式子,称为表达式

结果为返回值

4.4一元运算符

a++???后置自增?先返回原值后自加

++a???前置自增?先自加后返回值

a--

--a?

4.5 比较运算符
?

<??<=  小于 小于等于

>?>=   大于 大于等于

== 等于

===??全等

!=   不等于

!==  不全等

=  赋值

4.6逻辑运算符

&&?逻辑??与?简称?与?或and

???||??逻辑或???or

&&两边都为true?返回true?否则?false

||?两边都为false?返回?false??否则?true

!??取反

4.7 赋值运算符

=?

+=

-=

*=

/=

%=

4.8 运算符优先级

1 ?()

2 ???一元运算符

3 ??算法运算符

4 关系运算符

5 相等运算符

6 逻辑运算符

7 赋值运算符

8 ,

五 流程控制

5.1

顺序结构 ?按顺序执行

分支结构 判断执行

循环结构 判断后是否循环执行

5.2 ?分支结构

1

if()语句

???if(条件表达式){

???????????条件表达式为真?执行语句

}

2 ?if else

?if?????else?语句

if(条件表达式){

??条件表达式为真?执行语句



}else{

??条件表达式为假?执行语句

}

3 ?if else if

if??else?if??语句

if(条件表达式){

??条件表达式为真?执行语句



}else?if(条件表达式){

??条件表达式为真?执行语句

}else{

????条件表达式为假?执行语句

}

4 三元表达式

条件表达式???表达式1(true):表达式2(false)

5 switch

switch(表达式){

Case?valu?1?:

执行语句

Break;

Case?valu?2:

执行语句

break;

}

5.2循环结构

1 for循环

for(初始化变量,条件表达式,更新表达式){

??循环体}

2? 双 for循环

for(初始化变量,条件表达式,更新表达式){

??循环体

for(初始化变量,条件表达式,更新表达式){

??循环体

}

}

注意:外部循环一次,里面for循环整轮

3 ?while 循环

while?(条件表达式){

循环体

(更新表达式)

}

4 do while 循环

do{

循环体

}while(条件表达式);

总结 ;如果是用来计次数,跟数字相关用for

while do while 可以用来做更复杂的判断条件

5 continue ?break

Continue?;跳出本次循环,继续执行下面的循环

break ;跳出整个循环(循环结束)

6数组

6.1数组(array);就是一组数据的集合,储存在单个变量下的优雅方式

6.2数组创建

?1 利用字面量创建

var?arr?=?[];

2利用new创建

var?arr?=?new?Array();

3数组的索引

索引,下标,用来访问数组元素序号

数组名【索引】

arr[2];

4遍历数组

遍历就是把数组元素从头到尾访问一次



?for?(let?i?=?0;?i?<?array.length;?i++)?{

?????????????????console.log(array[i]);

?????????????}

5新增数组,元素,修改length长度

arr.length?=?5?;?多余的显示“undefind”

6 新增数组元素,修改索引号,追加数组元素

?arr[3]?=?'数组索引号3内容';

七 函数

函数就是封装了一段可以被重复执行调用的代码块

目的;就是让代码可以复用,

7.1 ?使用函数

声明函数

function?fun?(){

????函数体;

}



调用函数

fun();//函数名()

注意:如果实参的个数一直,则正常输出结果

若实参的个数多于形参个数,会去到形参的个数

如果实参的个数小于形参,多于的形参定义为 ?undefined 最终的结果就是NAN

7.2 函数的返回值

function?fun()?{

????return?需要返回的结果

}

?fun();

注;return 会把返回结果给函数调用,但是return后的代码不会执行

7.3 ?
?

arguments

不确定有多少个参数传递的时候可以使用?arguments来获取,

arguments?当前函数的内置对象,arguments中储存了传递的所有实参

arguments?展示形式是一个伪数组?因此可以遍历

伪数组的特点,具有lenght属性,按索引方式储存数据,但是不具备?push?pop?等方法

7.4 函数的声明方式2 ,函数表达式(匿名函数)

var?fun?=?function?()?{

????

}

//fun?是函数名,函数表达式也可以传递参数

八 作用域

8.1

?js作用域;就是代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性,更重要的是减少命名冲突

???Js的作用域(es6之前):全局作用域 局部作用域

全局作用域:就是整个script标签,或者是一个单独的js文件

局部作用域;就是在函数内部的就是局部作用域范围,只在函数内部起效果,和作用

8.2

变量作用域 ;根据作用域的不同,变量分为全局变量和局部变量

在全局作用域的声明的变量就是全局变量

在(局部作用域)函数内部声明的变量就是局部变量

注:在函数内直接赋值也是全局变量,

全局变量在浏览器关闭是清除,局部在使用后,不占内存

8.3 作用域链

作用域链;内部函数访问外部变量采用的是链式查找方式,这种结构称之为 作用域链

九 ?预解析

9.1 js引擎运行js分为两步;预解析 ,代码执行

预解析:就是js引擎会把js里面所有的var和function提升到当前作用域的最前面

9.2 预解析 为 变量预解析(变量提升 ) ??,函数预解析(函数提升)

1变量提升:就是把所有变量声明提升到当前的作用域最前面,不提升赋值操作

2 函数提升 把所有的函数声明提升到当前作用域最前面,不调用函数

十 ?对象

对象式由属性和方法组成的

10.1创建对象的三种方式

1利用字面量{}创建

var?obj?=?{

????name:'佩奇',

????age:12,

????sayHi:function?(){

????????//方法

????}

}

使用对象

obj.name//对象名.属性

obj['name']//对象名['属性']

使用对象的方法

obj.sayHi();//对象名.方法名

2 利用new object 创建


????????var?obj?=?new?Object();

????????obj.属性?=?'属性值';

????????obj.方法名?=?function?(){};

3 构造函数创建对象

function?构造函数名?大写(){

????this.属性?=?值;

????this.方法?=?function(){};

}

var?obj?=?new?构造函数名;

注;构造函数需要首字母大写, ??不需要return 就能返回结果

例子

function?Star?(?name,age?,sex)?{

????this.name?=?name;

????this.age?=?age;

????this.sting?=?function?(){



????}

}

var?star?=?new?Star('刘大海',28,'男');

console.log(star);

10.2

遍历对象 ?

for?(let?k?in?object)?{

????//k是属性?,?object?是对象??

???object[k];//对象属性值

}

对象是复杂数据类型

十一 ?js 内置对象

内置对象就是js 语言自带的

11.1 ?数学对象 Math

Math.PI//圆周率

Math.max//最大值

Math.min//最小值

Math.floor//向下取整

Math.ceil//向上取整

Math.round//四舍五入

Math.abs//绝对值

随机生成一个数

function?getRandom?(min,max){

????//随机生成两个数之间的?数

????return?Math.floor(Math.random()*(max-min+1)+min)

}

11.2 ?Date();日期 ?(构造函数)

??????var?date?=?new?Date();

????????date.getFullYear()//年

????????date.getMonth()//月??0-11

????????date.getDate()//日

????????date.getDay()//星期??0-6

????????date.getHours()//时

????????date.getMinutes()//分

????????date.getSeconds()//秒



????????date.valueOf()//时间戳

????????date.getTime()//时间戳

????????var?data?=?+new?Date()//时间戳

????????Date.now()//时间戳

????????转换公式

????????d?=?parseInt(总秒数?/?60?/60?/?24);//天

????????h?=?parseInt(总秒数?/?60?/60?%?24);//时

????????m?=?parseInt(总秒数?/?60?%60?);//分

????????s?=?parseInt(总秒数?%?60?);//秒

十二 数组

??var?arr?=?new?Array();//空数组

??var?arr?=?new?Array(2);//数组长度为2

??var?arr?=?new?Array(2.3);//数组元素为?2?3?

????????
12.1 reverse(arr) ?数组翻转



12.2 instanceof 运算符可以用来检测是否为数组
         var?arr?=?[1,2];

????????console.log(arr.reverse());



????????console.log(arr?instanceof?Array);



12.3

console.log(Array.isArray(arr));

12.4 添加 删除 数组元素

????var?arr?=?[1,2];

????????push();//像数组末尾添加一个或者多个元素

????????arr.push(4);

????????unshift();//像数组第一个位置添加元素

????????arr.unshift(0);

????????push,unshift?完后返回的是新数组长度,原数组会发生改变

????????console.log(arr);

?????????pop()//删除数组最后一个元素,一次只能删除一个

?????????arr.pop();

?????????shift();//删除数组第一个元素

?????????arr.shift();

?????????console.log(arr);

pop?shift?之后返回的结果是?删除的那个元素,元素组会改变

12.5 数组排序

??????var?arr?=?[5,8,3,2];

????????arr.sort(function?(a,b)?{

??????????return??a-b;

return??b-a;//降序排列



????????})

????????console.log(arr);

12.6 indexof(元素);返回该数组索引号,并且只返回满足条件的第一个,若找不到返回-1

数据去重?????

?var?arr?=?[5,8,5,3,2,8,3,2];

????????var?newarr?=?[];

????????for?(let?i?=?0;?i?<?arr.length;?i++)?{

??????????if(newarr.indexOf(arr[i]?)===?-1){

??????????????newarr.push(arr[i]);??

??????????}

????????}

????????console.log(newarr);//结果[5, 8, 3, 2]

Lastindeof() 从后向前找

12.7 数组转换为字符串

??????var?arr?=?[5,8,5,3,2,8,3,2];

????????var?a?=?arr.toString();

????????var??b?=??arr.join('*');

????????console.log(b);

????????console.log(typeof?a);

????????console.log(typeof?b);

12.8

?concat();合并两个或者多个数组

?concat(arr1,arr2,arr3);

12.9

splice(从第几个索引开始,删除个数(可以选填),插入元素(可选));

???????arr.splice(2,2,8);//从索引为二的开始删除,删除两个,添加一个元素8

被删除的元素组成一个新的数组

十三 ?字符串对象

13.1 字符串的不可变:指的是里面的值不可变,虽然看上去可以改变内容,但是其实是地址值变了,内存中新开辟了一个内存空间,

13.2

str?.indexOf(要查找的字符,起始的位置)

lastindexOf?从后向前找

13.3根据位置返回字符

???var?str?=?'ndianfinsnf';

?????????var?a?=??str.charAt(5);

?????????console.log(a);//返回的是索引为5的?f?

???var?n?=??str.charCodeAt(6)

?????????console.log(n);//返回的是索引为6的?ASCii值??



?str[5]//h5新增的方法,和charAt()一样

???????console.log(?str[5]);

13.4 拼接字符串


????concat(str1,str2,str3)

????????//拼接字符串,但是一般开发中中?+??操作比较多

13.5 substr 截取字符串

????var?str?=?'ndianfinsnf';

????????substr(开始截取的位置索引号,截取的个数)第二个参数不写默认截取到最后一个

???????var?b=?str.substr(2);//

???????console.log(b);

13.6 ?split()

???????var?str?=?'nd,an,fins,nf';

????????var?b=?str.split(',');

????????console.log(b);

13.7 repiace

????var?str?=?'nd,an,fins,nf';

????????str.replace('被替换的字符','替换成的字符')//注意只会替换第一个字符

????????var?sr?=?str.replace('n','d');//替换字符

?????????console.log(sr);

13.8

??var?str?=?'nd,an,fins,nf';

????????var?b?=?str.toUpperCase();//转换为大写字母

????????console.log(b);

????????var?a?=?str.toLowerCase();//转换为小写字母

????????console.log(a);

十四 ?简单数据类型和复杂数据类型

14.1

简单类型又叫基本数据类型或者 值类型 ,复杂数据类型又叫引用数据类型

值类型: 简单数据类型/基本数据类型,在存储时变量中储存的是值本身, 因此叫做值类型,string,number,boolean,undefined,null

引用类型:复杂数据类型,在储存时变量中储存的仅仅是地址值(引用),因此叫引用类型,通过new关键字创建的对象,(系统对象,自定义对象)比如Object,Date Array等

14.2 堆和栈

?堆和栈空间分配

1 栈 (操作系统):由操作系统自动分配释放存放在函数的参数值,局部变量的值等,其操作方式类似于数据结构中的栈;

???简单数据类型存放在栈里面

2堆(操作系统):存储复杂数据类型(对象);一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收

??复杂数据类型存放在堆里面

?

注意:js没有堆和栈的概念,只是通过堆和栈理解代码执行机制,便于学习

14.3

?简单数据类型传参,直接在栈存储值

?复杂数据传参,在栈开辟一个空间储存的是十六进制的地址值,地址值指向堆的一个开辟空间

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-01 16:46:55  更:2021-10-01 16:48:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 23:55:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码