JSDAY01
查东西用mdn 引入js的方法即书写位置: 外部(要注意写src连接) ,内部,内联三种方法
两种js注释方法 1.//:ctrl+/ 2./* */ :shift+alt+A
3个输出语句:1.document.write('xxx') 2.alert('xxx') 3.console.log(xxx控制台输出 给猿看的)
1个输入语句:prompt('xxx'),主意输入的类型是字符
变量 用户输入的数据如何保存下来? 变量是一个容器
语法 let变量名
变量命名规则:字母严格区分大小写 只能有下划线和$两种符号不能有短横线 数字不能开头
数组
语法 let 数组名 = ['元素1','元素2','元素3']
数据类型分类:基本数据类型和引用数据类型
基本数据类型:number数字型 string字符串型 boolean布尔型 undefined未定义型 null空类型
引用数据类型:object对象 function函数 array数组
利用**typeof检测数据类型 **如:console.log(typeof 123) 可以看到控制台输出number
模板字符串:用反引号document.write(大家好,我叫${变量1},今年${变量2}岁)
模板字符串里可以加标签和样式
数据类型的转换:
隐式转换:1.-,*,/会把字符串‘10’转换为数学型 2.10+‘10’输出是1010 3.10+ +'10'输出是20,+'10'将字符串转换为数字型
显示转换:转换为数字型的:Number()只能放数字类型的字符,不能放abc这样的,否则返回的是NaN,还有ParseFloat,ParseInt等,这两个可以容忍字母在后面;转换为字符型的:String() 进制转换同string(),比如定义了变量let age 然后age.string(2)就是将age转换为二进制数
jsday02
一元运算符:前置++与后置++,一个是先加再使用,另一个是先使用再加,独立使用时没有差别
let i = 1
console.log(i++ + ++i + i)
结果是7
输入的是Π:Math.PI
比较运算符,判断: ==是只要值相等 不管数据类型是否相等,===是值与数据类型都要相等
逻辑运算符:与&& 或|| 非!
逻辑运算符里的短路 &&中左边为false就短路 ||中左边为true就短路(比如undefined||20)
有5个值是当false看的: false,数字0, ' ', undefined, null这五个 其余为真的
运算符优先顺序:小括号 一元运算符 算数运算符 关系运算符 相等运算符 逻辑运算符 赋值运算符 逗号运算符,一元运算符里逻辑非优先级高 逻辑与比逻辑或优先级高。
什么是表达式?什么是语句?它们的区别是什么? 表达式有结果 语句如if分支语句 for语句 表达式计算出一个值,但语句用来自行以使某件事发生(做什么事)
三元运算符:条件?满足执行条件的代码:不满足条件的代码
switch的语法总是忘记所以记录一下
打断点方法:
while与continue结束循环继续下次循环 break
for循环语法
数组 操作数组的语法:增,删,改,查
增:arr.push(新增的内容,加到数组后面),arr.unshift(新增的内容,加到数组前面)这两个,删:arr.pop()删,arr.shift(),arr.splice(操作的下标,删除的个数)
let arr=['red','green','blue']
//删除最后一个元素,返回值是删除的元素
//arr.pop()
//看我删了一个,删的是最后一个blue
//console.log(arr.pop())
//看我删了一个,删的是第一个red
console.log(arr.shift())
函数参数的形参与实参 参数可以是一个数组
变量的作用域有全局变量,函数变量,块级变量({});(1)变量有一个坑,如果函数内部或者块级作用域内部,没有声明变量,直接使用,也当全局变量看,但是强烈不推荐,例如if(true){num = 10} console.log(num)也是ok的不会报错(2)还有一种特殊情况,函数内部形参可以做局部变量看 ; 作用域效果遵循就近原则
多个立即执行函数之间必须加分号结束,立即执行函数可以防止变量污染
对象 对象是一种数据类型 是无序的数据的集合 可以详细的描述某个事物
let 对象名={
属性:值,
属性:值,
属性:值}属性和方法都要写在对象里面
获得对象属性值的两种方法,不同场合用不同方法
对象中方法的访问方法:
对象的遍历 for in 循环语句,如果有一个对象obj
for(let k in obj){
console.log(k)//得到属性名
console.log(obj[k])//得到属性值
}
生成N-M之间的随机数
Math.floor(Math.random()*(M-N)+1)+N
不同数据类型的存储方式:栈(值存储)和堆(地址存储)
let obj1={
age=18
}
let obj2=obj1
obj2.age=20
console.log(obj1)//结果是obj1.age也会变成20