阿特伍德定律:
any application that can be written in JavaScript, will eventually be written in JavaScript”
意即“任何可以用JavaScript来写的应用,最终都将用JavaScript来写”
JavaScript
js 和java的关系:其实他们没有任何关系 雷锋和雷峰塔
概念:
一门客户端(浏览器)脚本语言,运行在我们的客户端,每一个浏览器都有js引擎
脚本语言:不需要编译,直接就可以被浏览器解释执行
最初用来验证表单
**功能:**增强用户和html的交互体验,2.可以控制html元素 3.让页面有动态效果,增强用户体验
起源
第一个脚本语言叫做 c-- 后更名scriptEase
NetSpace(网景) 开发liveScript ,后因与Sun合作,所以更名为JavaScript
微软,抄袭js开发JScript
ECMA指定ECMAScript(一套标准)
JavaScript = ECMAScript(标准) + BOM(js独有) + DOM(js独有)
ECMAScript 客户端脚本语言的标准
1.基本语法
- 与HTML结合
- 内部js src
- 外部js link
注意
script可以写在任何地方,但是推荐写在head标签
script可以有多个
注释
// 单行注释
/* */ 多行注释
数据类型
原始数据类型(基本数据类型)
1.number 数字类型,整数,小数,NaN(not a number 不是数字的数字类型)
2.string 字符串,“sss” , ‘ss’
3.boolean ture和false
4.null 一个对象为空的占位符
5.undefined未定义,如果一个变量没有给初始化值,就会被复制成undefind
判断类型用 typeof
引用数据类型 对象
变量
一小块存储数据的内存空间
java是强类型,js是弱类型
int i = 1 + 1; //2
var i = 1 + 1; //2
var i = 1 + "1"; // 11
var 变量名 = 初始化值;
typeof
获取变量的类型
运算符
1.一元运算符 ++ – + - 只有一个运算数的运算符
在js中,如果变量不是我们运算需要的类型,那么js引擎自动把运算数进行类型转换
其他类型转number
string转number NaN(有字符的情况下),数字(无字符)
boolean true 转成1 false转成0;
2.算数运算符 + - * / %(取模,就是余数的意思)
3.赋值运算符 = += -=
4.比较运算符 > < >= <= == ===(全等于)
比较方式
1.类型相同:
字符串:根据字典(ASCII)来直接比
2.类型不相同
先进行类型转化,在进行比较
5.逻辑运算符 && || !
其他类型转化成boolean
1.number: 0 返回false,1和其他数字返回true
2.string: ”“返回false,其他返回true
3.null undefined 都是false
4.对象 true
6.三元运算符
?值1:值2
语法
表达式? 值1:值2;
逻辑控制语句
1.if…else
2.switch java中,byte int shortchar js中,可以接受任何原始数据类型 number,string,boolean,null,undefined
case1:
break;
3.while
4.do…while
5.for
js的特殊语法
js中可以不写分号,但是强烈不推荐
变量的定义需要var,但其实可以省略,强烈不推荐使用
区别
写的话:表示一个局部变量
不写:表示全局变量
案例:九九乘法表
eg:https://mp.csdn.net/mdeditor/99223921#
对象
方法对象 Function
1.创建
1.不用
var fun = new Function(参数列表,方法体)
2.
function 方法名称(形参){
方法体
}
3.
var 方法名 = function(形参){
}
Array对象 数组对象
1.创建数组
var arr = new Array(元素列表);
var arr = new Array(默认长度);
var arr = [];
2.push():往末尾添加新元素,并返回新长度
join(参数):根据参数把数组分割转换成字符串[1.2,3,4,5,]
Date 日期对象
Math数学对象
/*
var math =new Math(),
math.方法();
数学对象直接使用
方法:
random() 返回0到1的值,包含0,不包含1;
ceil() 向上取整
floor() 向下取整
round() 取四舍五入
属性
PI
对象()
*/
//alert(Math.PI);
//alert(Math.random());
/*
RegExp 正则表达式 定义字符串的组成规则
单个字符 []
[a]
[ab] ab中的一个字符
\转义符
\d 单个数字字符 [0-9]
\w 单个单词字符 [a-zA-Z0-9]
量词符号
? 出现0次或1次
* 出现0次或多次
+ 出现1次或多次
{m,n} 最少出现m次,最多出现n次
开始结束符号
^ 开始
$ 结束
正则对象 定义字符串的组成原则
1.单个字符
[a] [abc] [a-z0-9A-Z]
/d 数字字符 /w单个单词字符
2.量词符号
? 出现1或0次
* 出现0次或多次
+ 出现1或多次
{m,n} 最少出现m次,最多出现n次 缺省
3.开始结束
^开始
$结束
使用方式
1.var reg = new RegExp("^\\w{6,12}$");
2.var reg = /^[/w]+[@][/w]+[.][/w]$/; 推荐使用
Global 全局对象
//Globle全局对象
/*
特点:不需要对象就可以直接调用 方法名()
方法: encodeURI()
decodeURI()
parseInt()
isNaN() 六亲不认 ,只要NaN参与的==全部返回flase
eval()
*/
/* var string = "美少女";
var encode = encodeURI(string);
var decode = decodeURI(encode);
alert(decode);*/
/* var str = "a123abc";
var num = parseInt(str);
alert(num);*/
/* var num = NaN;
alert(isNaN(num)); */