JavaScript(一)
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
函数
//具名函数声明
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:绝对值