JS
全称javaScript,然鹅它跟Java没有关系
脚本语言:进行本地表单验证
统一规则:JavaScript
组成
- ECMAScript:核心js es5 es6
- DOM:文档对象模型
事件:事件监听
<button></button>
- BOM:浏览器对象模型(后期在js里用到的所有标签都可作为对象 万物皆对象)
node环境下没法解析bom跟dom 因为linux里面没有浏览器
alert();//浏览器弹框
特点
1.脚本语言:本身具有逻辑能力和行为能力
2.解释性语言:需要js解析器解析执行
3.弱类型语言:
js:弱类型语言
var a=10;
a="hello";
java:强类型语言
int a=10;
a='hello';
4.从上到下依次执行(按照解析顺序)
优先解析函数的声明,再解析使用var操作符所声明的变量
代码顺序:
say(); //先执行一个say方法
run(); //又执行一个run方法
function say(){} //声明say
var a=10; //声明run
console,log(a);
var b; //声明b但未赋值
console.log(b);
function run(){} //声明run
b=20;
console.log(b);
解析顺序:
function say(){}
function run(){}
var a; //解析的过程中不进行变量的赋值
var b; //只进行变量的声明
say();
run();
a=10;
console.log(a);
b=20;
console.log(b);
执行顺序按解析顺序执行
5.大小写敏感
var a=10;
console.log(A);
使用
- node js运行环境:谷歌浏览器内配置js解析器
- repl
r:read 读取
e:evel 解析
l:loop 循环
- 命令
ls->程序
- 浏览器
js嵌入到html中
- 内联脚本
通过一个script标签
<script type="text/javascript></script>
- 外部引入
创建一个外部脚本文件
即后缀名为.js的文件
<script src='外部文件地址'></script>
注意:外部引入脚本的script标签内部不能再写js代码,解析器会忽略
基础语法
1. 标识符/变量的声明
var a=10;//变量的声明和赋值自右向左
标识符规则:
- 变量名字须有字母、数字、下划线以及$组成
- 不能以数字开头
- 不能使用关键字和保留字(在js中具体特殊意义的字符)
- 建议使用驼峰式命名(aBc)
声明方式:
var:
var a;//声明变量但不赋值
a=10;//从内存中获取a变量并赋值为10;
var a=10;//声明a并赋值20;
a=30;//变量的声明并赋值
var a= 10,b=20,c=30;//同时声明多个变量
let:(es6)
1.let声明的变量只在局部作用域有效
2.不能使用let重复声明,不同作用域内方可重复声明
3.不会对let声明的变量进行解析提升
const:(es6)
1.使用const声明的变量只在局部作用域有效;
2.使用const声明常量,一旦声明不可修改;
3.当属性值为一个引用数据类型时,引用地址不变,内容可变
2.注释:
- 单行注释 : // 后边的内容皆为注释内容
- 多行注释:/* 多行注释内容*/
作用:让代码更具有可读性,便于维护和管理
嵌套:注释不能嵌套
3. 语句
每一个语句建议使用分号结尾
局部变量和全局变量
- 作用域:变量可用的区域
- 全局变量:js的全局作用域内都能使用的变量
- 局部作用域: js函数内部
只要声明在函数内部,并且使用了一个var操作符的变量即为局部变量;其他声明为全局变量
数据类型
typeof(a):测试a变量的数据类型
返回值:undefined object number boolean string function
返回值类型:string
- 5种基本数据类型(简单数据类型 存放在封闭栈区)
undefined:未定义类型(既未声明也未赋值的变量)
var a;//当前a的数据类型和值都为undefined;
var a=undefined;//a变量值为undefined,数据类型为undefined
console.log(a);//对既未声明也未赋值的变量报错
null:空引用数据类型(当前变量即将指向一个引用数据类型然鹅并未指向)
var a=null;//当前变量即将指向一个引用数据类型但此时并未指向
number:所有数值类型均为number类型
NaN:not a number
var a="hello"/10;//NaN
isNaN(a);//测试a是不是不是一个数字,对于number类型返回false,非number类型返回ture
infinity:无穷大
var a=10/0;
var a=10;//整数
var a=10.5;//浮点数
var a=0xa;//十六进制 a=10.
var a=010;//八进制 a为十进制的8
boolean
取值: ture/ false
string:所有使用了双引号或者单引号包裹的字符都为string类型
var a='undefined';//a的值为undefined,数据类型为字符串类型
json字符串:除了数值类型、null类型、undefined类型,属性名全部加上字符串
tips:浏览器端对不同的数据类型显示颜色也不同,null、undefined类型为浅灰色,字符串类型为黑色,number为绿色,对象类型为蓝色
- 1种引用数据类型(复杂数据类型 存放在开放堆区)
object:function、array、math
创建方式:
var student={
name:'lisi',
age:20
}
var student=new Object()//一看到new就相当于在内存中新建了一块空间
student.name='lisi';
student.age=20;