概念:一门客户端脚本语言
- 运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎
- 脚本语言:不需要编译,直接就可以被浏览器解析执行
功能(html完成页面元素的展示,css完成页面样式的控制和布局的)
- 可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验
JavaScript发展史
ECMAScript:客户端脚本语言的标准
基本语法篇:
- 与html结合方式
内部的JS 外部的JS
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--内部JS
外部JS
-->
<!--内部JS,在html内部定义一个script标签,标签里面就是javascript的代码-->
<!--script标签可以定义在任意位置,放的位置影响他的执行顺序-->
<script>
alert("Hello world!");
</script> <!--alert阻塞式,不点击确定不加载后面内容-->
<!--外部JS,定义<script>通过src属性引入外部的js文件-->
<script src="JS/a.js"></script>
<!--script标签可定义不止一个-->
</head>
<body>
<input type="text">
</body>
</html>
-
注释
单行注释://注释内容
多行注释:/* 注释内容 */
-
数据类型
原始数据类型(基本数据类型):
number:数字 整数/小数/NaN(not a number 一个不是数字的数字类型,跟任何数做运算还是NaN)
string:字符串。(JavaScript没有字符的概念)
boolean:true和false
null:一个对象为空的占位符 null通过typeof运算符,会得出是一个object类型而不是null(bug,但被ECMAscript一直沿用下去)
undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefined
引用数据类型:对象 -
变量
变量:一小块存储数据的内存空间
Java语言是强类型(开辟了变量的存储空间,需要指定变量的存储的数据类型,这块空间只能存放固定类型的数据,强类型在申请空间需要规定类型)语言,而JavaScript是弱类型(开辟了变量的存储空间,没有指定存放变量的数据类型,放什么类型的数据都可以,弱类型在申请空间不需要规定类型)语言
语法: var 变量名=初始化的值;(也可以直接定义变量名,后面用的时候在赋值)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
//定义一个变量
//var a = "三天之内杀了你,骨灰给你扬了";
//alert(a);
//定义number类型
var num = 1;
var num2 = 2.2;
var num3 = NaN;
document.write(num+"---"+typeof(num)+"</br>");
document.write(num2+"</br>");
document.write(num3+"</br>");
//定义string
var str='zbc'
var str2='wuqinghalashao'
document.write(str+"</br>");
document.write(str2+"</br>");
//定义null
var obj=null;
var obj2=undefined;
var obj3;//不定义默认undefined
document.write(obj+"</br>");
document.write(obj2+"</br>");
document.write(obj3+"</br>");
</script>
</head>
<body>
</body>
</html>
- 运算符
一元运算符:只有一个运算数的运算符 ++ – +(正号,代表数字正负)
(注意:在JS中,如果运算数不是运算符所要求的类型,呢么js引擎会自动的将运算数进行类型转换
我们的正负号要求的类型是number类型的,只有number才会有正负之分,如果给定的类型不是不是运算符要求的number类型,他会把其他类型转换成number类型 eg:+“123” 会将"123"->123)
其他类型转number:
string转number:按照字面值转换,如果字面值不是数字,则转为NaN(不是数字的数字);
boolean转number: true->1 false->0;null undefined 转出来为NaN;
算术运算符:+ - / *…
赋值运算符:= += -=…
比较运算符:>= < … ===(全等于)
比较方式:1.类型相同 直接比较 (字符串,按照字典顺序比较,按位逐一比较,知道得出大小结果为止)document.write(("abc">"acd")+"</br>")//false;
2.类型不同 先进行类型转换,再比较document.write(("122"<123)+"</br>")//true;
===:在比较之前,先判断类型,如果类型不一样,直接返回false
逻辑运算符: && || !…
if(obj)直接判断字符串是否为空字符,等价于上面的写法
三元运算符: ? :
- 流程控制语句
<script>
var a="abc";
switch (a) {
case 1:alert("number");break;
case "abc":alert("string");break;
case true:alert("true");break;
case null:alert("null");break;
case undefined:alert("undefined");break;
}
</script>
- 特殊语法