1. 认识js
javascript 语言,简称js;
javascript 借用java 名气,但是和java没有关系
javascript 一门解释型语言,被浏览器解释执行(不用被编译,运行时直接解释(翻译)从上到下,一行行执行)
网页:
html 结构
css 样式
javascript 行为, 用户的行为
js 作用
1. 可以进行各种交互,点击,移入,移出,拖动等
2. 和后台的数据进行交互, 如登录
3. 修改样式; 通过js修改样式
4. 可以操作dom (添加,修改,删除),操作网页中的元素
js 组成(三部分):
ECMAScript(ECMA 262标准): 基本语法和基本对象
变量,数据类型,选择结构 ,循环结构,函数,数组,字符串
DOM(文档对象模型): 提供操作网页的方法和接口
BOM(浏览器对象模型): 提供操作浏览器的方法和接口
2. js的引入方式(css 的引入方式)
1. script 标签
<script type="text/javascript">
</script>
2. script 引入js文件
<script src="" />
3. 在以on开头事件中,使用js
<p οnclick=""></p>
4. a 标签中的href属性中使用js
<a href="javascript:alert('跳转到首页')">首页</a>
3. js输入输出
输出:
弹出框: alert("内容"); 注:可以中断程序
控制台输出: console.log("输出内容");
网页输出: document.write("输出内容");
注:document.write可以解析html标签
输入:
输入框
let 变量名 = prompt("提示信息");
注:prompt返回的都是字符串
注释:
// 单行注释
/* */ 多行注释
4. 变量
变量:可以变化的量, 变量本质是容器;
变量:在内存中开辟的一个空间,用于存储数据
4.1 定义一个变量
var 变量名; //es 5 : ECMAScript 5
let 变量名; // es6 : ECMAScript 6
let age = 18; // = : 赋值符号,将右边值放到左边变量中
let name = "张三";
//在内存中开辟一个空间(age),18放到这个中
4.2 变量名的命名规范
2-1、变量命名必须以字母、下划线”_”或者”$”为开头
2-2、变量名中不允许使用空格和其他标点符号,首个字不能为数字
2-3、不能出现中文
2-4、遵循一个规范(根据项目来选择)
匈牙利法,小驼峰法,大驼峰(帕斯卡)法
注意:js区分大小写
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。
小驼峰法:第一个单词首字母小写,后面其他单词首字母大写
大驼峰:每个单词首字母大写
http://bugshouji.com/bbs-read-run?tid=552
4.3 容器里放的是什么
计算机中,容器放的称为数据
5. 数据类型
js:弱类型语言, 根据赋值决定的数据类型
number , string, boolean,null, undefined
number : 数值, 特点:直接写,不加符号
let age = "18";
string : 字符串,特点:需要加引号(单引号,双引号都行)
let name = "张三";
boolean : 布尔值 ; true/false
null : 空 , typeof 的值是object
undefined: 未定义; 表示 :申明了但是没有赋值
总结 : 除了字符串外,其它都不加引号
查看变量的数据类型:
typeof 变量名;
数据类型分两大类:
原始类型(基本类型):number , string, boolean,null, undefined
引用类型:object 对象 , array 数组 , function 函数
6. 运算符
6.1 算术运算符 +,- , * , / , %
%: 取模,求余数
5%2: 5取2的模(5/2的余数)
注意: + : 两层意义
1. + 号两边都是数值,则进行加法运算
2. +号两边有一个是字符串,则进行连接
- : 减号两边的数据类型不同时,将进行类型的隐式转换成number;
true -> 1
false -> 0
null -> 0
undefined -> NaN , not a number
(同理:* , / , % 都可以隐式转换)
%: 取模,即求余数
100%3 , 77%2 , 88%2
6.2 比较运算术(结果为boolean)
> , < , <=, >=, == , != , === , !==
注:1. 字符串也是可以比较大小的,根据ASCII 码(a:97 A:65 )
2. 比较的结果都是boolean类型
== , ===
== : 只判断值是否相等
===: 判断值 和 数据类型是否相等
6.3 逻辑运算符(并且, 或者, 非)
并且: && : 有一个为假,即为假; 所有为真,即为真
或者: || : 有一个为真,即为真; 所有为假,即为假
非: ! (取反) !true = false; !false = true;
!undefined = true;
6.4 一元运算符(有一个操作) ++ , --
i++ ; i=i+1;
i--; i=i-1;
单个语句执行都是+1;
多个语句时++在前,返回的自加之后的值,
++在后,返回的时加之前的值;
--同理
6.5 二元运算符(有二个操作数)
a+b
a-b
6.6 三元运算符 (有三个操作数)
(条件表达式) ? 条件为真时,执行 : 条件为假时,执行;
注:三元运算符只适用于简单的逻辑,不适用于复杂的逻辑,
如果条件成立还想执行其他的东西就会报错
sex === '男'?alert('你的性别是男性'),console.log('啦啦'):alert('你的性别是女性')
6.7 赋值运算符
= : 将赋值运算符的右,赋值给左边
+=
-=
/=
*=
a+=b; 相等于 a=a+b;
a/=3; 相等于 a=a/3;
优先级:算术运算符>赋值运算符
赋值运算符优先级最低
7. 数据类型的转换
7.1 转数字
1. parseInt(): 转换成整数, 原理:从左到右一位一位的转,有一个不合条件,就不转了
不支持小数点
parseInt("12a");
2. parseFloat() 转换成浮点数, 原理:从左到右一位一位的转,有一个不合条件,就不转了
只支持一个小数点
3. Number() : 整体进行转换,不能数值,返回NaN
true - 1
false - 0
null - 0
undefined - NaN ( not a number)
注: NaN还是是number类型
NaN和任意值比较都为false;
7.2 转字符串
String(要转换的值)
7.3 转成boolean类型
Boolean(要转换的值)
非0数字 - true 0 -- false
非空字符串 - true 空字符 串 -- false
null, undefined -> false
8. 字符串转义符
\n : 换行
\t : 水平制表 tab键(4个)
\r : 回车
\\ : 斜杠
\' :单引号
\": 双引号
注: 单引号不能嵌套单引号,双引号不能嵌套双引号
9. 拓展- 隐式转换
1. 在算术运算符中
+法运算中,如果一方是字符串,则进行拼接
如果没有字符串,则将其它转number ,再进行计算
-,/,* : 会运算符前后都会转成 number,再进行计算
2. 在比较运算符中
情况1: 如果有一个操作数是布尔值, 将其转成number ; true - 1 , false - 0
5>true
情况2: 如果一个操作数是字符串,另一个操作数是数值, 将字符串转成数值
5>"true"