js是一门有趣的语言
-
JavaScript的书写位置
-
内部js
-
写在head标签中,可以通过window.onload等待html渲染完成之后再执行js
-
写在html末尾,上(最后一个body上方)等浏览器加载完html,再操作dom
我们将 <script> 放在HTML文件的底部附近的原因是浏览器会按照代码在文件中的顺序加载 HTML。 如果先加载的 JavaScript 期望修改其下方的 HTML,那么它可能由于 HTML 尚未被加载而失效
-
-
-
外部js
- 通过src属性引入,用于多个模块中某个共同操作的解耦
-
内联js
-
<body> <button onclick="alert('后年去字节跳动')">心想事成</button> </body> - 这种写法和内部js写在head中通过window.onload等待html渲染完成之后,再去执行js一样.
-
-
JS的输入
-
输出
-
向dom中的body输出
document.write("toDO") -
页面弹出输出(alert会在html渲染前弹出)
alert("toDO") -
控制台测试输出
console.log("toDO")
-
-
输入
-
页面弹出对话框输入(会在html渲染前弹出)
prompt('请输入您的姓名')
-
-
-
执行顺序
- 按HTML文档流顺序执行JavaScript代码 alert() 和 prompt() 它们会跳过页面渲染先被执行
-
js中的变量
-
let和var(默认都使用let)
let 先声明再使用,不可以重复声明 var 声明: 可以先使用 在声明 (不合理) var 声明过的变量可以重复声明(不合理) 比如变量提升、全局变量、没有块级作用域等等
-
-
js中的数据类型
-
基本数据类型
-
number(整数,小数)
- NaN(not a number 表示一个不正确的数字计算)
-
string('和"无区别)
-
模版字符串
${xx}let name='zy' let age=21 document.write(`我叫${name},今年${age}岁`)
-
-
boolean
-
undefined(变量不赋值默认)
我们开发中经常声明一个变量,等待传送过来的数据。 如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否有数据传递过来 -
Null(赋值了,但内容为空)
- 一般用在为一个尚未创建的对象先赋一个null
-
-
引用数据类型
- Object
-
-
检测数据类型
- typeof 两种写法 typeof x / typeof(x)
-
类型转换
-
隐式类型转换
- 号两边只要有一个是字符串,都会把另外一个转成字符串 除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型
-
显示转换
-
Number,若字符串转Number时有非数字会转为NaN
- Number(x)
- parseInt(x)
- parseFloat(x)
-
String
- String(x)
- x.toString(进制)
-
-
-
prompt默认输入为string,转为Number运算
-
数组
-
声明
- let arr =new Array(length)
- let arr =[xx,xx,xx,xx,xx] 两种无区别
-
js数组可以自动扩容,无需担心越界
-
-
splice删除
- arr.splice(start,num) 从下标start开始删除num个元素,不设置num默认删到末尾,用于实现抽奖或者删除购物车中的商品
-
-
函数 弱类型,形参可多于实参
-
Lambda(java就是借鉴这里)
let fn=function(){ //xxxx } fn(); //web API中 btn.onclick=function(){ alert("xxx") }
-
-
对象
let obj={ name:'xxx' //对象属性用: 赋值 age:18 } //或者 let obj=new Object()
-
遍历对象
- for in遍历对象(for of 遍历数组)
for(let k in obj){
console.log(k) //属性名
console.log(obj[k]) //value值
}
-
内置对象
-
Math
-
random 生成[0,1)之间的随机数
//生成[0,10]的随机数 Math.floor(Math.random() * (10 + 1)) //生成[5,10]的随机数 Math.floor(Math.random() * (5 + 1)) + 5 //生成N-M的随机数 Math.floor(Math.random() * (M - N + 1)) + N
-
-
*
-
js的基本数据类型和引用数据类型
-
基本数据类型
- string
- number
- boolean
- undefined
- Null
-
引用数据类型
- Object
- Array
- 引用类型显然这个java一样修改指向同一个堆的对象,会影响彼此
-