JavaScript之ECMAScript

  • JavaScript简介
    • JavaScript是什么
    • JavaScript可以做什么
    • JavaScript有什么
  • JavaScript的书写位置
    • 内部JavaScript
    • 外部JavaScript
    • 内联JavaScript
  • JavaScript注释
    • 单行注释
    • 块注释
  • 输入输出语法
    • 什么是语法
    • 输出语法
    • 输入语法
  • 字面量
  • 变量
    • 声明变量
    • 变量赋值
    • 变量的本质
    • 变量命名规范和规则
      • 规则
      • 规范
  • let和var的区别
  • 数组
    • 声明数组
    • 数组取值
    • 数组增加元素
    • 数组删除元素
    • 冒泡排序
  • 数据类型
    • 为什么要给数据分类
    • 数字型(number)
    • 字符串型(String)
      • 字符串的拼接
      • 模板字符串
    • 布尔类型(boolean)
    • 未定义类型(undefined)
    • 空类型(null)
    • 数据类型检测
    • 类型转换
      • 隐式转换
      • 显示转换
        • 转换为数字型
        • 转换为字符型
  • 运算符
    • 算术运算符
    • 赋值运算符
    • 一元运算符
    • 比较运算符
    • 逻辑运算符
      • 逻辑运算符的短路
    • 运算符优先级
  • 语句
    • 表达式和语句
    • 分支语句
      • if语句
      • 三元表达式
      • switch
    • 循环语句
      • while语句
      • for循环
  • 函数
    • 函数声明
    • 带参函数
    • 函数返回值
    • 变量作用域
    • 匿名函数
    • 立即执行函数
    • 函数传值小技巧
  • 对象
    • 对象是什么
    • 声明对象
    • 对象属性和方法
      • 属性
      • 访问属性
      • 方法
      • 访问方法
    • 操作对象
    • 遍历对象
    • 内置对象
      • Math
      • 随机数公式
    • 不同数据类型的存储方式

JavaScript简介

JavaScript是什么

是一种运行在客户端(浏览器)的编程语言,实现人机交互效果

JavaScript可以做什么

  • 网页特效(监听用户的一些行为让网页做出对应的反馈)
  • 表单验证(针对表单数据的合法性进行判断)
  • 数据交互(获取后台数据,渲染到前端)
  • 服务端编程(node.js)

JavaScript有什么

JavaScript的书写位置

内部JavaScript

直接写在html文件里,用script标签包裹

script标签写在 </body>标签上面

外部JavaScript

<script src="js文件路径"></script>

内联JavaScript

<button onclick="alert('helloworld')">你好世界</button>

JavaScript注释

单行注释

符号://

块注释

符号:/* */

输入输出语法

什么是语法

是一种规则,通过规则来和计算机沟通

输出语法

document.write('要输出的内容')
  • 向body内输出内容
  • 如果输出的内容写的是标签,也会被解析成网页元素
alert('要输出的内容')
  • 页面弹出警告对话框
console.log('控制台打印')
  • 控制台输出语法,调试常用

输入语法

prompt('提示文本')

字面量

计算机中描述的 事/物

变量

变量是存储数据的容器,是一个盒子

声明变量

let 变量名
  • 声明变量用let关键字

变量赋值

let 变量名 = 值
  • 可以更改变量值,重新赋值即可

  • let不允许多次声明一个变量

  • 可以一次声明多个变量,用逗号隔开即可

let age = 18, uname = 'xsd'

变量的本质

内存:计算机存储数据的地方,相当于一个空间

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

变量命名规范和规则

规则

  • 不能用关键字
  • 只能用下滑线,字母,数字,$组成,且数字不能开头
  • 字母严格区分大小写

规范

  • 取名要有意义
  • 遵守小驼峰命名法

let和var的区别

let是为了解决var的一些问题

var声明:

  • 可以先使用在声明
  • 可以重复声明
  • 有变量提升,全局变量,没有块级作用域

声明变量使用let更好

数组

声明数组

let 数组名 = [数据1, 数据2, ..., 数据n]
  • 数组按顺序保存,所以每个数据都有自己的编号
  • 编号从零开始,编号也叫索引或下标

数组取值

数组名[下标]

例如:

let names = ['小米', '小红', '小龙', '小天']
names[0] // 小米
names[1] // 小红

数组增加元素

数组.push()方法将一个或者多个元素添加到数组的末尾,并返回该数组的新长度

数组.unshift()方法将一个或多个元素添加到数组的开头,并返回该数组的新长度

数组删除元素

数组.pop()方法从数组中删除最后一个元素,并返回该元素的值

数组.shift()方法从数组中删除第一个元素,并返回该元素的值

数组.splice(start, deleteCount)方法

  • start:指定修改的开始位置,从零计数
  • delete:表示要移除的数组元素的个数,可选的,如果省略则默认从指定的起始位置删除到最后

冒泡排序

let arr = [5, 4, 3, 2, 1]
for(let i = 0;i < arr.length - 1;i++) {for(let j = 0;j < arr.length - i - 1;j++) {if(arr[j] > arr[j+1]) {let temp = arr[j]arr[j] = arr[j+1]arr[j+1] = temp}}
}
console.log(arr)

数据类型

为什么要给数据分类

  • 更加充分和高效的利用内存
  • 也方便了我们的使用

数字型(number)

即我们数学中学习的数字,可以是整数,小数,正数,负数

字符串型(String)

通过单引号,双引号,反引号包裹的数据,单引号和双引号没有本质上的区别,推荐使用单引号

  • 单引号和双引号可以嵌套使用,但是不能自己嵌套自己
  • 必要时可以使用转义符\,输出我们想要的内容

字符串的拼接

字符串可以使用加号拼接

模板字符串

拼接字符串和变量

document.write('大家好,我叫' + name + ',今年' + age + '岁')

使用模板字符串

document.write(`大家好,我叫${name},今年${age}岁`)

布尔类型(boolean)

表示肯定或者否定在计算机中对于布尔类型,它有两个值true和false

未定义类型(undefined)

只声明变量,不赋值的情况下,变量的默认值为undefined

空类型(null)

  1. undefined表示没有赋值
  2. null表示赋值了但是内容为空

把null值作为尚未创建的对象

数据类型检测

通过typeof关键字检测数据类型

let age = 18
let uname = "小米"
let flag = false
let buy
console.log(typeof age) // number
console.log(typeof uname) // string
console.log(typeof flag) // boolean
console.log(typeof buy) // undefined

类型转换

隐式转换

某些运算符被执行时,系统内部字动将数据类型进行转换,这种转换称之为隐式转换

+号运算只有有字符串参与运算,则结果为字符串

除了+号以外的算术运算符运算时,结果一定是数字类型,其他类型都会转换成数字类型

  • 特别注意的是:+号作为正号时可以转换为Number

显示转换

转换为数字型

  • Number(数据):将数据转换为数字类型,如果字符串里面有非数字,转换失败时结果为NaN,NaN也是数字类型,代表非数字
  • parseInt(数据):将数据转换为整数,不会四舍五入
  • parseFloat(数据):保留小数,会自动过滤掉尾部非数字的内容
console.log(parseFloat('100px')) // 100

转换为字符型

  • String(数据):将数据转换为字符类型

  • 变量.toString(进制):按进制转换数字

运算符

算术运算符

主要包括:加,减,乘,除,取余(求模)

赋值运算符

对变量进行赋值的运算符

  • =
  • +=:用它来举例
let num = 1
// num = num + 1
num += 1
console.log(num) // 结果是2
  • -=,*=,/=,%=

一元运算符


比较运算符

字符串比较是比较字符串对应的ASCI码

  • 从左往右依次比较

  • 如果第一位一样则比较第二位

  • NaN不等于任何值,包括它本身

  • 尽量不要比较小数,小数有精度问题

  • 不同类型比较会发生隐式转换

逻辑运算符

逻辑运算符的短路

只存在于&&和||中,当满足一定条件则右边不执行

原因:

  • 通过左边可以得到整个式子的结果,没有必要在判断右边

有几个值是当false来看的:

  • 数字0为假,其他数字为真
  • 字符串’'为假,其他字符串为真
  • null
  • undefined

运算符优先级

语句

表达式和语句

表达式是一组代码的集合,JavaScript解释器会将其计算出一个结果

语句时JavaScript整句或命令,用来做一件事情

分支语句

if语句

单分支:

if (条件) {满足条件要执行的代码
}
  • 条件为true时执行大括号里面的代码
  • 小括号里面的值若不是布尔类型,则会发生隐式转换

双分支:

if (条件) {满足条件要执行的代码
}else {不满足条件执行的代码
}

多分支:

if (条件1) {代码1
}else if (条件2) {代码2
}else if (条件3) {代码3
}else {代码n
}
  • 先判断条件1,若满足条件1就执行代码1,其他不执行
  • 若不满足则向下判断条件2,满足条件2执行代码2,其他不执行
  • 若依然不满足继续往下判断,以此类推
  • 若所有条件都不满足,则执行else里面的代码

三元表达式

条件 ? 满足条件执行的代码 : 不满足条件执行的代码
true ? 1 : 2
  • 如果条件满足则返回前一个结果,不满足则返回后面的结果

switch

switch (数据) {case 值1:代码1breakcase 值2:代码2breakdefault:代码nbreak
}
  • 将switch里面的数据与case里面的值依次进行比较,如果全等(===),就执行里面的代码
  • 如果所有的值都和数据不全等,则执行default里面的代码
  • case有穿透现象,会与break一起使用

循环语句

while语句

while(循环条件) {要重复执行的代码(循环体)
}
let i = 1
while(i <= 3) {document.write('我会循环3次<br>')i++
}

for循环

for(声明记录循环次数的变量; 循环条件; 变化值) {循环体
}

函数

函数声明

function 函数名() {函数体
}
  • 函数声明好后必须要调用才会有效

带参函数

function 函数名(参数列表) {函数体
}
function getSum(num1, num2) {document.write(num1 + num2)
}
// 函数调用
getSum(1, 2)

函数返回值

用return关键字给函数返回一个值

function getSum(x, y) {return x + y
}
// 函数调用
let num = getSum(1, 2)// 也可以放变量
document.write(num)

return里面只能返回一个值,但是可以返回数组或对象

变量作用域

匿名函数

将匿名函数赋值给一个变量,并且通过变量名称进行调用,我们将这个称为函数表达式

let fn = function() {函数体
}
// 函数调用
// 可以使用形参和实参
fn()

立即执行函数

// 第一种写法
// 同样可以有形参
(function() {})()
// 第二种写法
;(function() {}())

多个立即执行函数之间必须加一个分号结束,所以分号需加前面

函数传值小技巧

function fn(x = 0, y = 0) {console.log(x + y)
}
fn(3, 5)

对象

对象是什么

对象(Object):JavaScript里面的一种数据类型,用于详细描述某一个事物(事物的属性和行为)

声明对象

let obj = {}

对象属性和方法

let obj = {属性名: 属性值,方法名: 函数
}

属性

  • 属性都是成对出现的,包括属性名和值,它们之间用冒号分割
  • 多个属性用英文逗号分割
  • 属性就是依附在对象上的变量
  • 属性名可以使用单引号或双引号包裹,也可以省略

访问属性

点的形式和中括号的形式

let obj = {name: 'xsd',sex: '女',age: 20
}
// let age = obj.age
let age = obj['age'] // 必须加引号

方法

  • 方法是由方法名和函数两部分构成,它们之间用分号分割
  • 多个方法之间用英文逗号分割
  • 方法是依附在对象中的函数
  • 方法名可以使用单引号或双引号包裹,也可以省略

访问方法

let obj = {name: 'xsd',sex: '女',age: 20,sayHi: function() {document.write('hi~~')}
}
// 对象名.方法名
// 可以有形参
obj.sayHi()

操作对象

对象的本质是无序的数据集合,操作数据无非增,删,改,查

遍历对象

let obj = {uname: 'xsd',age: 18,sex: '女'
}
for (let k in obj) {console.log(k) // 打印属性名console.log(obj[k]) // 打印属性值
}

内置对象

Math

  • Math是JavaScript提供的一个内置对象

提供了一系列做数学运算的方法

方法有

console.log(Math.random()) // 随机数
console.log(Math.PI) // 圆周率
console.log(Math.ceil(1.3)) //2
console.log(Math.floor(1.3)) // 1
console.log('-----------------')
// round就近取整
console.log(Math.round(1.1)) //1
console.log(Math.round(1.5)) //2
console.log(Math.round(1.9)) //2
console.log(Math.round(-1.1)) //-1
console.log(Math.round(-1.5)) //-1
console.log(Math.round(-1.9)) //-2

随机数公式

// 求得[N,M]的一个随机数公式
let number = Math.floor(Math.random() * (M - N + 1)) + N

不同数据类型的存储方式

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

堆:存储复杂数据类型,一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收

JavaScript之ECMAScript相关推荐

  1. 浅谈 JavaScript、ECMAScript (ES5、ES6)是什么、相互关系

    一.ECMAScript 和 JavaScript 的关系 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. ES6 === ECMAScript6 ...

  2. JavaScript基础(ECMAScript)

    Web前端基础修炼 HTML基本标签详解与运行截图 CSS基本操作详解及截图演示 JavaScript基础(ECMAScript) JavaScript中DOM操作 JavaScript中BOM操作 ...

  3. js 系统教程-01-JavaScript 的历史,JavaScript 与 Java 的关系,JavaScript 与 ECMAScript 的关系,JavaScript的版本

    目录 目录 JavaScript 语言的历史 诞生 JavaScript 与 Java 的关系 JavaScript 与 ECMAScript 的关系 JavaScript的版本 原文地址 目录导航 ...

  4. 前端——javascript基础-ECMAScript

    文章目录 JavaScript简介 ECMAScript JavaScript的引入方式 javascript得输出方式: 变量 五种基本数据类型 运算符 数据类型转换 if语句 switch语句 w ...

  5. Javascript组成--ECMAScript,DOM,BOM

    ECMAScript 1.JavaScript中的类型转换 2.作用域.作用域链和闭包 3.函数与函数表达式 4.arguments对象 5.call与apply的应用 6.callee与caller ...

  6. javascript组成-ECMAScript、bom、dom

    javascript组成 1. javascript组成 1.1 ECMAScript(js的一些语法) 1.2 BOM:browser object model ----浏览器对象模型 bom中包含 ...

  7. 详解JavaScript(ECMAScript与DOM)

    编译软件:IntelliJ IDEA 2019.2.4 x64 运行环境:Google浏览器 目录 前言 一. 简介 二. js的特性 三. js的Helloworld 四. js的引入方式 4.1 ...

  8. JavaScript学习总结(一)——ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)...

    一.JavaScript简介 JavaScript是一种解释执行的脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,它遵循ECMAScript标准.它的解释器被称为JavaScript引 ...

  9. ECMAScript,javascript,jscript

    ECMAScript是一种由欧洲计算机制造商协会(ECMA)通过ECMA-262标准化的脚本程序设计语言.这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是 ...

最新文章

  1. php的json格式
  2. 1101 Quick Sort (25 分)【难度: 一般 / 知识点: 快排】
  3. koa2异常处理_读 koa2 源码后的一些思考与实践
  4. php 二进制权限,基于二进制位的权限控制(数据库里的二进制)
  5. BBR开启教程(转)
  6. PostgreSQL 12系统表(2)pg_tables
  7. 1-VScode格式化ESlint-方法(最全最好用方法!)
  8. centos6.2系统下安装配置FastDFS步骤
  9. 《我是一只IT小小鸟》会员书评
  10. Android APP测试流程
  11. Java编程软件教学:Eclipse入门
  12. AbstractApplicationContext的refresh方法
  13. 手机怎么设置腾达路由器后显示远端服务器,教你如何用手机快速设置腾达路由器...
  14. iOS 三国杀 Ver.LOG
  15. Unity 图片滑动
  16. Vue教程-可视化图表
  17. 合宙Air724 Luat 开发接入ThingsCloud 物联网云平台
  18. 大学学python用记笔记吗_python笔记(1)-关于我们应不应该继续学习
  19. mysql学习记录之创建数据库指定编码
  20. 在Linux中,_exit()、exit(0)、exit(1)、和return的区别!!

热门文章

  1. 诺基亚两年裁员11044人,中国幅度最大达3500人
  2. 诺基亚宣布将在芬兰裁员280人 低于此前计划裁员数
  3. CentOS下zookeeper集群搭建
  4. php consult用法,YanPHP: YanPHP——一个为API开发而设计的高性能轻量级框架
  5. C#初学者教程系列1:什么是.NET Framework?
  6. 软考高级 真题 2012年下半年 信息系统项目管理师 综合知识
  7. nginx降权+安装php
  8. 京东2015校园招聘技术类笔试题(笔试时间:2014-10-18)
  9. 车间调度-灰狼算法的应用:以算例MK01为例
  10. Linux内核5.10编译 与调试