JavaScript(一)

发布时间 2023-10-03 13:31:33作者: yheyi

javascript的组成:ECMAScript和WebAPIs(DOM、BOM)

 

注释

ctrl+/单行注释

shift+alt+a块注释

 

js的输入输出语法:

输出
document.weite("hello")//可以带标签,在body内输出
alert('alert')//弹窗警告
console.log("hello")//控制台输出

输入
let name = prompt("你叫:")

//aler()和prompt()会跳过页面渲染先被执行

字面量 :在计算机中描述事或物(数据)

变量:存储数据的容器

变量声明: let 变量名  //let 不允许多次声明一个变量
变量初始化: let 变量名 = 数据
变量赋值(变量更新):变量名 = 数据

//也不建议一次声明多个变量 如:let a=1,b=2这类

//let 和 var的区别
//以前的javascript使用 var关键字而不是let
//var 可以先使用再声明,声明过的变量可以重复声明,函数作用域
//建议用let
//let 块级作用域

变量拓展 数组:将一组数据存储在单个变量名下的优雅方式
let arr = []

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

变量命名规则

禁关键字和保留字

首字符:字母、下划线、$

首字符之后:字母、数字、下划线、$

字母严格区分大小写

小驼峰命名法 如myName

 

常量

const PI = 3.14
//必须初始化,不允许重新赋值

 

js数据类型

基本数据类型 (值类型)存储变量时存储的是值本身 在栈里

number 、string、Boolean、undefined、null

引用数据类型(复杂类型、引用类型) 存储变量时存储的是地址(引用) 在地址存在栈里值存在堆里

通过new关键词创建的对象 object、Array、Data

由此理解以下两点:

简单数据类型传参和复杂数据类型传参的区别

数组和对象为什么推荐使用const来声明

 

//js是弱数据类型,赋值之后才能知道变量属于哪类
//number
//string '' "" ``包裹的都叫字符串
//boolean
//undefined 只声明不赋值
//null 赋值为空、无、值未知

 

算数运算符+-*/%

+数字相加、字符相连

模板字符串 ${}

控制台输出语句:数字型和布尔型为蓝色,字符串和undefined为灰色

检测数据类型 typeof(x)和 typeof x

类型转换

表单和prompt获取过来的数据默认是字符串类型

隐式转换

+(算术运算符加号)任一侧有字符则字符相连

-*/ 转数字类型

''-1   //-1  
''+1   //"1"
"a"-1  //NaN
null+1 //1 null数字转换为0
undefined+1 //NaN
NaN+1    //NaN

//''、0、undefined、null、false、NaN 转布尔后为false

//小技巧
//+号作为正号解析可以转换成数字型
console.log(+'203') //数字型203

显式转换

转数字类型

Number()

parseInt()只留整数

ParseFloat()可保留小数

转字符类型

String()

变量.toString()

 

赋值运算符 = += -= *= /=

自增自减运算符

比较运算符

字符串比较依次比较AscII码

小数比较有精度问题

 

表达式语句

表达式是可以被求值的代码

语句是一段可以执行的代码

 

分支语句

 

数组

const arr = [数据1,数据2...]
const arr = new Array(数据1,数据2....)
//增
arr.push()//添加到末尾
arr.unshift()//添加到头部
//删
arr.pop()
arr.shift()
arr.splice(起始下标,个数,还能添加)
//改
arr[下标] = 新值
//查
arr[下标]
//冒泡排序 小泡冒上来
//数组排序
//升序
arr.sort(function(a,b) {
   return a -b
})
//降序
arr.sort(function(a,b) {
return b-a
})

 

函数

//具名函数声明
function 函数名(参数列表) {
   函数体
}

/*函数名命名规范:
can能否执行某个动作
has是否含有某个值
is是否为某个值
get获取某个值
set设置某个值
load加载某些数据*/

//实参多于形参 舍去 但可以在arguments里面查看所有实参
//形参多于实参 undefined 设默认值更严谨

//无retrun时默认返回undefined
//return 直接结束整个方法,不论有多少层循环
//for 结束当前循环

//作用域
//函数内部未声明直接复制的变量当全局变量

//匿名函数
//使用方式 1函数表达式
let fn = function() {}
//先声明再调用,否则报错
//2立即执行函数
//形式1
(function(){})()
//形式2
(function(){}())
//多个立即执行函数需要;分开

逻辑短路

对象

//声明
const obj = {
   uname:'dudu',
}
const obj = new Object()

//增
//对象名.新属性 = 新值
//删
delete obj.uname
//改
//对象名.属性名 = 新值
//查
obj.uname
obj['uname'] //"",特别适用于user-name这种多词属性

//遍历对象
for (let k in obj) {
console.log(k)//属性名
   console.log(obj[k])//属性值
}

内置对象

Js内部提供的对象,包含各种属性和方法给开发者调用

Math

random:生成0-1之间的随机数[0,1)

ceil:向上取整

floor:向下取整

max:找最大数

min:最小数

pow:幂运算

abs:绝对值