javascript是弱类型语言。
1.结合方式
1.在head标签内直接用
<script type="text/javascript">
</script>
2.新建一个js文件 xx.js 然后引用
<script type="text/javascript" src="hello.js"></script>
2.数据类型
js数据类型分为原始数据类型和对象数据类型。
js的原始类型 5种
1 number 数字 不分整型或浮点型
2 string 字符串
3 boolean 布尔
4 null 一般人为来赋值为null. 对象数据类型的占位符.
5 undefined(未定义) null的衍生值. 通常是系统自动赋值.当我们创建一个变量,并且没有初始化.
一些语法:
1. 声明变量, 变量的类型是随时可以变化的,也就是说当变量被赋什么值时,就是什么类型。
2. 声明变量时,也可以不加var。 加var声明,作用范围在代码块中.不加var声明,作用范围为全局
3. js中每行语句的结束使用 ";" 号来表示. 也可以不使用";",但一般都加上。
3.语句
跟java中一样。
4.运算符
1.一元运算符
+ - 是number类型的运算符,当它加在其他数据类型进行运算时,会自动将其他数据类型转化为number类型
2.boolean运算符
number => boolean 除了+0,-0,NaN 其他都是true.
string => boolean 字符串不为空,那么其他都是true.
null => boolean false
undefined => boolean false
Object => boolean true
3.逻辑运算符
逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。
如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:
逻辑 AND 运算符(&&)
• 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
• 如果两个运算数都是对象,返回第二个对象。
• 如果某个运算数是 null,返回 null。
• 如果某个运算数是 NaN,返回 NaN。
• 如果某个运算数是 undefined,返回undefined。
• //1 false&&o ==> false
• //2 true&&o ==> o ==> true
• //3 o&&true ==> true
• //4 o&&false ==> false
• //5 o1&&o2 ==>
• //6 null&&true == > null
• //7 NaN && true == > NaN
• //8 NaN&&null ==> NaN
• //9 null&&NaN ==> null
•
• //10 undefined&&true ==> undefined
• //11 false&&undefined == > false
逻辑 OR 运算符(||)
与逻辑 AND 运算符相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值:
• 如果一个运算数是对象,并且该对象左边的运算数值均为 false,则返回该对象。
• 如果两个运算数都是对象,返回第一个对象。
• 如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。
• 如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。
• 如果某个运算数是 undefined,返回undefined。
• //1 false||o ==> o
• //2 true||o ==>true
• //3 o||false == > o
• //4 o||true == > o
• //5 o1||o2 ==>o1
• //6 null||false == > false
• //7 null||true ==> true
• //8 null||undefined ==>undefined
• //9 undefined||null ==>null
4.数学运算符
+ :使用+法时, 如果相加的值包含字符串,会自动转换为字符串类型
- * / :其他数学运算符中,字符串会自动转换为数字
5.关系运算符 > <
1.两个字符串的比较:字符串的比较规则=>asc码的比对
alert("aa">"aaa"); //结果为false
2.字符串跟数字比较:将字符串转换为数字后进行比较
alert("2">1);// "2" 转换为 数字2 结果为true
6.等性运算符
== != :
执行类型转换的规则如下:
• 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
• 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
• 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
• 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
在比较时,该运算符还遵守下列规则:
• 值 null 和 undefined 相等。
• 在检查相等性时,不能把 null 和 undefined 转换成其他值。
• 如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
• 如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。
=== :
全等于运算符不仅比较数值,还比较类型。类型不同的变量比较为false.
7.三元运算符跟java中一样。
8.赋值运算符跟java中一样。
5.function对象
1.三种创建方法: (1)function fun1(){};
(2)var fun2 = function(a,b){}
(3)var fun3 = new Function("alert('hello3');");
2.js中的函数在调用时,只看函数名称.不看参数.也就是说可以给一个固定参数的的函数传任意个参数。
3.函数里面有一个arguments属性,是一个数组,存储的是传入该函数的实参数。
4.ECMAScript 定义的属性 length 声明了函数期望的参数个数
Function 对象也有与所有对象共享的 valueOf() 方法和 toString() 方法。这两个方法返回的都是函数的源代码,在调试时尤其有用。
Grobal对象
Grobal对象是全局对象,所以在调用其方法是不需要直接写函数名即可。
方法:
1.encodeURI/decodeURI 可以将中文Url编码 例如: 汤姆=>%E6%B1%A4%E5%A7%86
2.encodeURIComponent/decodeURIComponent 转换的范围更大,
包括一些url中的字符. & : /
3.parseInt 转换成整数 。 从左到右依次转换.转换到遇到不能转换的字符为止
parseFloat 转换成浮点数 。从左到右依次转换,遇到字符停止或者遇到第二个小数点停止。
4.isNaN() 判断一个值是否是NaN
5.eval() 解析运行方法
三大包装类
js中5个原始类型,有3个包装类. => Number String Boolean
js中 有伪对象的概念.原始类型可以直接调用 对应包装类型的属性或函数.
Math对象
主要参考手册使用。
Array对象
1.创建
var arr1 = [1,2,3,4];
var arr2 = new Array(1,2,3,4);
var arr3 = new Array(4); // 如果调用数组构造,只传递一个参数,并且参数的值是数字.那么该值将作为数组初始化长度
2.对象的方法
pop 弹栈 将0索引 的变量移除并返回
push 压栈 将一个值放入数组的0索引位置
reverse 将数组反转 => 会对数组本身顺序进行调整
sort 排序 => 默认会按照字符串比较的方式排序.而不是数字.
sort可以传入比较器,根据比较器的比较方法进行比较。 arr1.sort(comparator);
比较器:
比较器需要传入两个参数,他们是数组进行比较时,会传入两个值进行比较,
大于0 表示 a>b , 等于0 相等 ,小于0 a<b
function comparator(a,b){
return a-b;
};
3.注意:
1 数组中元素的类型可以任意,也就是说一个数组中可以存储任意类型的数据
2 数组的长度是可以随时变化的.
Date对象
参考手册上使用。
RegExp对象
1 创建
参数1: 正则表达式
参数2: 匹配模式. g: 全局 i: 忽略大小写
(1)var reg1 = new RegExp("e","gi");
(2)var reg2 = /e/gi;
2.方法
test 方法 : 校验 字符串是否能与正则表达式匹配 返回值为boolean类型。
3.String 与正则结合的 4个方法
var str = "hello world";
//split 切割
alert(str.split(/o/g));
//replace 替换
alert(str.replace(/l/g, "a"));
//match 匹配并获得 , 找不到就返回null
alert(str.match(/or/g));//or
//search 查找索引 返回第一次出现该值的位置。
alert(str.search(/l/g));//2
bom 之 window对象
方法:
1. open方法 => 打开一个新的窗口
参数1: 打开的url
参数2: 窗口名称=> name属性
参数3: 窗口的特征=> 长宽(其他属性未必好使)...
参数4: 是否将新窗口的地址加入到浏览器历史记录中
返回值: 返回一个window对象. 新打开的窗口的window对象
window.open(url, windowName, windowFeatures, optionalArg4)
2.close 方法 关闭当前窗口。
3.定时器方法1
setInterval 设置定时器
clearInterval 清除定时器
//-----------------------------------------------
参数1: 可以是一段string, 内容是js代码 也可以接受一个函数类型的对象
参数2: 毫秒单位的时间
返回值: 当前开启的定时器id
功能: 每个参数2毫秒,执行参数1代码.
window.setInterval("alert('abc');", 2000)
window.setInterval(fun1, 2000) //fun1是一个函数
//-----------------------------------------------
window.clearInterval(id);
定时器方法2
setTimeout 设置定时器
clearTimeout 清除定时器
//-----------------------------------------------
参数1: 可以是一段string, 内容是js代码 ,也可以接受一个函数类型的对象
参数2: 毫秒单位的时间
返回值: 当前开启的定时器id
功能:参数2毫秒后,执行参数1代码(只执行一次).
var id = window.setTimeout("alert('abc');", 2000);
//-----------------------------------------------
window.clearTimeout(id);
bom 之 history对象
history.back() - 与在浏览器点击后退按钮相同
history.forward() - 与在浏览器中点击按钮向前相同
history.go(num) 方法可加载历史列表中的某个具体的页面。
num=-1,0或者1 ,分别表示后退,本页面和前进。
bom 之 location对象
assign() 加载新的文档。
reload() 重新加载当前文档。
replace() 用新的文档替换当前文档。