JavaScript概述
客户端脚本语言
脚本语言:不需要编译,直接执行(由上到下)
作用:让HTML具有动态交互效果。
JavaScript = ECMAScript(标准/规则)+JavaScript(BOM/DOM)
JavaScript的使用
JavaScript中的注释:没有注释的代码是没有灵魂的。
- 单行注释: //内容
- 多行注释:/* 内容*/
JavaScript中的数据类型
基本数据类型(原始数据类型) 5种 - number: 包含整数、小数 、Nan(不是数字的一种数字)
- string:字符串。JavaScript中没有字符的概念 'a’也是字符串。
- boolean:true/false.
- null:占位为空的对象.
- undefined:变量定义了,但是没有初始化。
JavaScript变量的定义
Java是强类型语言,JavaScript是弱类型语言. - 强类型语言在内存中开辟空间存储数据的时候,就规定了这片空间只可以存储什么样的数据,即使更改,数据类型也无法变换.
- 弱类型语言在内存中开辟空间存储数据的时候,没有规定这片空间只可以存储什么样的数据,即使更改,数据类型也随之变换.
变量定义方式: - var 变量名 = 初始化值;
- var 变量名;
如何判断变量是什么数据类型? - 通过一个方法进行判断 -> typeof
- typeof(要判断的数据);
- typeof 要判断的数据
- typeof null 类型会显示Object,这是原始JavaScript的错误,被ECMAScript沿用了.
一元运算符
++/–
如果++/–在前,先自增/自减再进行运算.
如果++/–在后,先进行运算再进行自增/自减.
+(-)
转换可以将不是number的数据类型转换为number类.
string - 如果string的字面值是数字,直接转换为数字,如果string的字面值不是数字,则转换为NaN.
boolean - true为1,false为0
比较运算符
类型相同: - 字典比较 -> 比较字符串 -> 按照字典顺序进行比较(a<b<c<d<e) 从第一位开始逐一向后比较,直到有一个对应的元素不相同比较出结果未知.
类型不同 - 会先进行类型转换 -> 再进行比较.
(===)全等比较 -> 要进行类型转换,类型不同全等比较都是false. - 1.判断两个比较的数据的数据类型是否相同,如果说数据类型不相同,则直接返回false.
- 2.如果数据类型相同再进行比较.
逻辑运算符
&& || !
&& -> 有false则false.
|| -> 有true则true.
! 其他类型转换为boolean
number -> 根据number的数值来转 0/NaN 为false 其他的为true.
string -> 空字符串""为false,其他的为true.
null/u -> 都是false.
引用数据类型 -> 都是true.
/方便判断以后对象是否在NULL,在JavaScript中判断.
if(对象名称){
//可以直接判断对象是否为NULL,因为会将对象转换为boolean,将转换后的boolean类型作为if判断的参数.
}
三元运算符
表达式?值1:值2; //表达式为true则为值1,表达式为false则为值2;
Js中的特殊语法
书写语句可以不加 ; 但是推荐加.
定义变量可以不加var,但是推荐加.
不加:全局变量
加:局部变量
流程控制语句
默认 -> 由上到下依次执行
分支 -> if switch
循环 -> for while do…while
switch
- Java中byte short int char 1.5(枚举) 1.7(String)
- JavaScript可以接受所有的基本数据类型
- JavaScript中的Switch也有case穿透,也可以写default,也要写break.
for的定义 - Java中 int i
- JavaScript没有int 只有var
- for(var i = 0;i <= 100;i++)
for(var i = 1;i <= 9;i++){
for(var j = 1;j <= i;j++){
i + * + j + = + i*j
}
}
JavaScript常见的引用数据类型(对象)
Function
创建
Function 方法名(形式参数列表){
方法体;
}
var 方法名 = function(形式参数列表){
方法体;
}
var fun = function(a,b){
return a + b;
}
fun(3,4);
fun();
fun(3);
fun(3,4,5,6);
调用
方法名(实际的参数);
特点
- 形式参数列表以及返回值不需要写var(数据类型).
- 重名的方法(参数列表一样),在Java中不可以(不构成重载),在JavaScript中是可以的 -> 后面的方法会覆盖前面的同名方法.
- JavaScript中方法的调用只与方法名称有关,和方法的参数列表无关,但是参数是一一对应的.
- 方法内部有一个内置对象 arguments 封装了方法实际调用的时候传入的所有参数.
-
- arguments是数组 -> 数组名[索引]来获取对应的索引的值.
属性:length参数的个数.
Array 数组
创建
- arguments是数组 -> 数组名[索引]来获取对应的索引的值.
- var arr = new Array(元素列表);
- var arr = new Array(数组长度);
- var arr = [元素列表];
方法 - join(参数) -> 参数: + 元素1+元素2+元素3 ->
- push(参数) -> 向数组的末尾添加元素.
调用 - 数组名[索引]
特点 - Array是个乱炖 -> 什么数据都可以放进去,没有规定数据类型(var)
-
- var arr = [1,15,12.26,“ha”,‘h’,‘你好’,“哈喽”];
- Array的长度可变 -> 前提是代码中访问了对应索引.
- var arr = [1,2,3,4,5]; //4
- alert(arr[500]);
Date
创建 - var date = new Date();
方法 - toLocaleString() 将date对象转换为一个字符串.
- getTime() 可以获取距离1970年1月1日00:00:00过去了多少毫秒.
Math
/*Math不需要创建对象->直接使用Math即可*/
/*属性 PI 做计算*/
var π = Math.PI;
document.write(π+"<br>");
var r = 5;
/*pow可以计算x的y次方(幂)*/
var result = Math.pow(r,2);
document.write(result+"<br>");
/*13.4 13/14*/
/*ceil 对数进行上舍入*/
r = 13.5;
var result = Math.ceil(r);
document.write(result+"<br>");
/*floor 对数进行下舍入*/
var result = Math.floor(r);
document.write(result+"<br>");
/*round 把数四舍五入为最接近的整数*/
var result = Math.round(r);
document.write(result+"<br>");
/*random 返回0-1之间的随机数 [0.0,1.0)*/
var result = Math.round(Math.random() * 100);
document.write(result+"<br>");