JavaScript--ECMAScript
ECMAScript: 核心语法, 基础语法
Js代码写法:
- 结合事件::写在行内: 行内js
- 内部js:写在html页面内部, 使用<script>标签, 写在html任何一个位置, 而且还可以写多个, 多个Script连接在一起
- 外部js: js代码写在一个外部文件(后缀名: .js), 在html引入这个js文件(<script src="./xxx.js"></script>)
注意: <script>一旦写了src(引入外部js文件), 在script标签内部的js全部失效
核心语法分为:变量、数据类型、数组、运算符号、控制语句、注释、输入/输出、语法约定
Js弱语言, 变量在定义的不需要确定数据类型, 在赋值的时候,才确定
声明变量: var 变量名;
Js的变量的数据类型: 变量赋值的时候才确定
- number 表示数值
- string: 表示字符串, js中,单双引号引起都是字符串
- boolean
- undefined: 未定义 声明一个变量,没有赋值, 这个变量的数据类型:undefined
- null: 定义一个变量, 赋值为null, 此时数据类型就是null, null与undefined值相等
Js中表示false情况:之外的情况, 都表示true
- undefined
- Null
- false
- 0
- “ ”
typeof检测变量的数据类型 语法: typeof 变量名
数组
1. 直接赋值法:
var 数组名 = []; //数组没有元素
var 数组名 = [元素1,元素2,....];
2. 通过new的方式
var 数组名 = new Array();//数组没有元素
var 数组名 = new Array(size);//数组中有n个元素
var 数组名 = new Array(元素1,元素2,....);
详细方法查看api
循环
普通for循环:
for(var i =0 ; i<数组名.lenght ; i++){};
forEach循环:
for (var key in 对象名/数组名) {}
注意: for..in获取的值key,不是元素,是数组的key(下标)
Js的输出:
1) alert() 弹框
2) console.log()在控制台输出
3) document.write(内容) 把内容写在页面上
Js的输入:
prompt() 输入, 弹出一个输入框, 返回的字符串
函数
1) isNaN(变量) 返回的是一个boolean
判断这个变量是否是一个非数字: true 变量不是数字 false: 变量是数字
NaN: not a number, js的number类型有一个特殊值:NaN
特点: NaN 与任何数字进行计算,结果都是NaN
2) parseInt(变量) 把变量转换为整数(number), 忽略小数点
3) parseFloat(变量) 把变量转换为number, 转换第一个小数点
1) 命名函数: 函数有名字
语法: function 函数名([参数列表]){
//函数体
}
2) 匿名函数; 函数没有名字
A) 作为另外函数的参数, 使用匿名函数
B) 把这个函数赋值给一个变量, 这个函数可以声明为匿名
3) 自调用: 函数声明后,调用
Js中的声明提升: 在一代js代码中, 解析的时候, 浏览器会把这一段code中的变量的声明以及函数声明提升到最前面
ES6语法:let,const新的关键字
使用let 定义变量, 替换var const定义常量
作用域: 全局作用域,函数作用域,块作用域:
常用函数: Array数组函数、Date日期函数、Math数学函数、String字符串函数 等
常用事件
鼠标事件
- onclick: 鼠标单击
- onmouseover: 鼠标移入
- onmouseout: 鼠标移出
onload: 整个页面加载完成, 图片加载完成
键盘事件: 网页游戏: 角色扮演
- onkeydown: 键盘某个键按下去触发
- onkeyup: 键盘某个键弹起来触发
- onkeypress: 在键盘按键被按下并释放一个键时发生。
事件对象: 属性: keyCode: 按下键的unicode编码
表单事件: 表单验证
- onsubmit: 表单提交的时候触发的事件
- onselect: 文本被选中
- onfocus: 标签得到焦点
- onblur: 失去焦点事件
自定义对象
1) 通过字面量创建对象: {} 表示对象, 创建一个包含属性的对象
语法: {
属性名1:值,
属性名2:值2,
...
}
//1.字面量的方式创建对象, json var stu1 = { name:"张三", age:21, sex:"男", study:function(){ alert("正在学习"); } }; var stu2 = { name:"李四", age:22, sex:"男", study:function(){ alert("正在学习"); } };
2)通过构造函数创建对象, 构造函数就是普通函数, 规范: 构造函数函数名第一个字母大写, 没有返回值
//2.第二种方式: 创建对象, 通过构造函数 //声明一个构造函数 , 原型链 function Student(name,age,sex){ this.name = name; this.age = age; this.sex = sex; // function study(){ // alert("学习"); // } this.study=function(){ alert("学习"); } } var student1 = new Student("王五",21,"男"); //alert(student1.name); //alert(student1.age); //student1.study(); console.log(student1); var student2 = new Student("赵柳",22,"女"); //alert(student2.name); //alert(student2.age); console.log(student2); //函数普通调用,不会创建对象,student3没有值, var student3 = Student("ll",21,"女"); console.log(student3);