[TOC]
* * * * *
# 1.JavaScript简介
* * * * *
## 1.简介
### A.诞生的背景
1995年网景公司开发的
开发目的:受制于当时的带宽,做表单验证
97年被提交给ECMA,98年获取ISO认证
### B.功能
a.数据处理
b.用户交互
c.服务器端开发
# 2.JavaScript组成
* * * * *
![](https://box.kancloud.cn/2fef89bb47866a4cf6205e8e3b65fc56_493x187.png)
# 3.JavaScript语法
* * * * *
#### 1.注释
//单行注释
/**/多行注释
#### 2.什么是标示符
变量,函数,属性的名字,或者函数的参数。
标示符的命名规则:
a.由字母,数字,下划线(_)或美元符号($)组成
b.不能以数字开头
c.不能使用关键字,保留字作为标示符
d.不能包含算术运算符,或特殊字符(#,etc)
### 3.1 变量
* * * * *
ECMAScript的变量是松散类型
松散类型:可以用来保存任何类型的数据
什么是变量? 从字面上看,变量是可变的量;
从编程角度讲,JavaScript变量是存储数据值的容器。
如何使用:声明 赋值 取值
//var a;使用var关键字进行声明
//= 使用等于号进取赋值
a.变量可以先声明,再赋值
b.也可以声明的同时赋值
~~~
var a = 10;
~~~
### 3.2数据类型
* * * * *
~~~
1.数据类型
2.typeof instanceof
~~~
#### A.数据类型的分类
- >1.1原始类型:number,string,boolean,undefined,null
~~~
a.number
var a =10,b=20.1;
b.string
//用单引号或双引号包裹的叫string类型
var c= “hello world”;
var c = 'good';
c.boolean
//只有两个值true或false
d.undefined
var a;
//一个变量之声明未赋值就是undefined
e.null
1.null值表示一个空对象
2.如果定义的变量准备在将来用来保存对象,那么最好将改变量初始化null而不是其他值
使用typeof操作符来识别基本类型
~~~
- >1.2 引用数据类型:array,object,function
> ### array
```
//声明变量
var arr = [1,2,3,4]
//获取数组的长度
arr.length
//读取数组的值(数组的下标从0开始)
arr[index]
//向数组的末尾添加值
arr[arr.length]=5;
```
> ### object
```
//声明对象
var chengchao = {
name:”chengchao”,
age:20
}
//读取变量的属性
console.log(chengchao.name);
```
>### function
~~~
//定义:封装特点功能的代码块
//声明函数
function a(){
console.log(“hello world”)
}
//调用函数
a();
~~~
>声明提前
~~~
在正式执行脚本之前,将所有var声明的变量,提前预读到(当前作用域的)顶部,集中声明创建。
然后再开始执行程序。
***赋值留在本地。
~~~
~~~
eg:
console.log(a); //undefined
var a=10;
~~~
> 全局变量和局部变量
~~~
全局变量:在函数外声明的变量
局部变量:在函数内部声明的变量
~~~
# 4.数据类型的转换
* * * * *
### 4.1强制转换
~~~
String,Boolean-->number
任意-->数字:Number();
Number(true) //1;
Number(false) //0;
//只能识别纯数值的字符串
var a = "20";
var b = "hello world";
console.log(Number(a));// 20;
console.log(Number(b)); //NaN
~~~
### 4.2自动转换
> 定义:不需要程序员干预,js自动完成的类型转换
算数计算中的自动转换:
#### 1.[算数计算]()中,数据都默认转为[数字](),再计算,不能转为数字则为NaN
~~~
Boolean类型:true-->1 false-->0
eg:
var a=1;
var b=true;
var c = "hello world";
console.log(a+b); //2
console.log(a-c); //NaN
~~~
#### 2.[特殊]()+运算中,碰到字符串,+就变为字符串拼接
另一个不是字符串的数据,被自动转为字符串
比较运算(>,<,>=,<=,==,!=)中的自动转换:
默认将所有类型转为数字再比较
将两个值做比较-->返回值:true、false
### 4.3强制转换
>#### 1. 任意-->[数字]():3个API
a.特点:只能识别纯数字的字符串
```
Number(x)
eg:
var a ="20";
console.log(Number(a))
//只能识别这样的字符串
```
b. [将字符串转为数字]():2个API
parseInt(str):
从第一个字符开始依次读取每个数字,只要碰上第一个非数字字符就停止,自动跳过开头的空字符
***[不识别小数点]()
> Tip:何时使用:将字符串转为整数时
~~~
var width="20px";
console.log(Number(width)) //NaN
console.log(parseInt(width)) //20
~~~
parseFloat(str):用法同parseInt
>比较Number()和parseInt()
~~~
var b=true;
console.log(Number(b)) //1
console.log(parseInt(String(b))) //NaN
~~~
>#### 2. 任意类型-->字符串:2个API
~~~
x.toString(); x不是undefined或null时,才可用
String(x)
~~~
>#### 3.任意类型-->Boolean: Boolean(x)
~~~
只有5个值转为false:
"" NaN undefined null 0
其余都转为true
~~~
# 5.运算符和表达式
* * * * *
### 5.1算术运算
~~~
+,-,*,/,%,++,--
~~~
### 5.2比较运算:将两个值做比较-->返回值:true、false
~~~
>,<,>=,<=,==,!=
~~~
>Tip: ***比较运算中:
a. 默认将所有类型转为数字再比较
[特殊情况]()
NaN:NaN不等于,不大于,不小于任何值(包括自己)
NaN和任何数据做!=比较时,始终返回true
isNaN(n):本意是判断一个值是否是NaN
### 5.3逻辑运算:将多个关系运算综合起来,得出最终结论,返回值:true、false
~~~
&& || !
~~~
### 5.4赋值运算
~~~
+= -= *= /= %=
~~~
### 5.5三目运算
~~~
var a=(10>4)?10:4;
~~~
# 6.递增和递减
### 6.1递增
a++和++a;
#### 1.单独使用a都会加一
```
eg:
var a=10;
a++
```
#### 2.在表达式中使用
- 前加加,a自增后运算
- 后加价,a先运算后自增
~~~
var a=10;
var b;
b=a++;
console.log(b) //10;
~~~
### 6.2递减
同上
## 例子
~~~
var a = parseInt(window.prompt("请输入年龄"));
if(a>18){
alert("成年人")
}else if(a>12){
alert("青年人")
}
~~~
~~~
var a = window.confirm("你是否选择购买");
console.log(a);
~~~
- JS入门教程
- 第1章 JS基本语法
- 练习
- 1.1 补充教程
- 第一节 拓展
- 第2章 控制语句DOM,BOM,事件
- 第一节 错误机制
- 第二节 拓展
- 第三节 事件
- 1-1 事件流
- 1-2 事件处理程序
- 1-2-1 事件获取form-input的值
- 1-2-2DOM0 级事件处理程序
- 1-2-3 DOM2级事件处理程序
- 第四节 if-else
- 第3章 DOM拓展
- 第一节 DOM
- 1.1 补充
- 第二节 DOM02
- 第三节 总结
- 1.节点层次
- 第4章 函数
- 第一节 函数就是值
- 第二节 函数的参数
- 第三节 对象的方法
- 第四节 改变this
- 第5章 数组
- 第一节 数组的方法
- 1.1 创建数数组
- 1.2增删改查的方法
- 1.3数组检查
- 1.4二维数组
- 1.5获取数组中最大的值
- 第二节 数组拓展
- 1.1数组constructor 属性
- 1.2prototype属性
- 1.3获取数组中最大值的方法
- 1.4补充展开语法
- 1.5from对数组迭代
- 1.6遍历
- 1.7 数组下标集合,值的下标
- 第三节 拓展
- 第四节 瀑布流代码实现
- 第6章 基本类型和引用类型的区别
- 第7章 字符串
- 第8章 JS内置对象
- 第9章 动画
- 第10章 正则
- 第一节 创建正则表达式
- 第二节 string中支持正则的api
- 第三节 正则对象的属性
- 拓展学习资料
- 第四节 语法
- 第五节 例子
- 5-1 获取一串字符串中的数字
- 第11章 ajax
- 第一节 原生ajax
- 第二节 http,get,post
- 第三节 跨域
- 3-1 http-server跨域
- 3-2 koa-跨域
- 第四节 jquery-ajax
- 4-1 $.ajax
- 第五节 axios
- 第12章 面向对象
- 第一节 原型
- 第二节 原型链,继承
- 第三节 多态
- 第四节 ajax-http
- 4-1 静态方法http
- 第13章 cookie,LocalStorage,sessionStorage
- 13-1
- 第14章 erros
- 第15章 koa-router
- 第16章 模板化
- JS拓展教程
- 第一章 JS基础
- 第三章 高级语法
- 2-1 闭包
- JS工具
- 第一章 百度地图
- js框架
- mock.js
- JS特效
- 1.简书点击div,滚动到顶部
- 2.jquery 点击a缓慢跳转到对应ID
- 3.获取滚动条距离顶部的高度
- 第二阶段项目
- 2-1.豆瓣数据到mongDB