关系运算符中,string之间的比较 “ab” > "ac" 是从左到右一个一个字符对应比较他们的acall码, 如果左边没有字符右边有字符, 算右边大
等值运算符 == / !=, 其他类型都会倾向number类型转换, 如果比较中存在number类型, 其他类型会先转换成number, true转换成number则为1, false则为0; null 会转成NAN, 任何类型与NAN比较都为false, 包括NAN自己之间的比较。
null 与 undefined 比较返回true
全等于 === 比较的包括类型本身, 不会类型转换
虽然在比较时会做类型转换, 但是做完比较运算后, 类型还是原来的类型
对象
特殊对象 Function对象 语法: function fun1(){ }
看上去就是一个方法, 实质上就是一个对象, 但是又可以当作方法来调用
对象创建 var fun2 = new function(a, b){
alert( a + b );
return a + b;
};
对象的属性
fun2.length();
对象的方法
fun2.toString(); //对象的toString() 会返回对象的创建
函数的调用: 例如在fun2中 fun2(1, 2); 会显示3,
fun2(1,2,3,4) 同样能调用函数, 但只会取前两位参数
fun2(); 也能调用函数, 只是函数中的两个参数没有初始化, 默认值为nudefined, 相加时会转换成number类型, 但是undefined不会转成number,只会转成NaN,NaN相加为NaN
实际上, 函数在参数的接收时, 会将传经来的参数封装在一个arguments中, 如果在函数中写形式参数, 则是作为一个引用来获取arguments中封装的参数
返回值 用 return xxx ; 直接返回, 不用指定返回值类型, 如果 return ;结束函数执行, 不返回任何参数, 则默认返回undefined
void运算符 void(fun2());会屏蔽掉fun2返回的值
对象类型
三大包装对象
Number, Boolean, String
对象的创建
var str = new String( xxx ); //xxx参数可以为任何类型的参数
常用方法与java类似
Global对象
常用的方法encodeURI / decodeURI
encodeURIComponent / decodeURIComponent
在 发送get请求时(表单的提交) 会把亲求的内容直接当作参数拼接在uri中的, 但是如果出现中文时, 是无法直接解析中文的, 浏览器会先将中文解析成 二进制 数 然后 转换成 十六进制数 再拼接到uri中
encodeURI则是可以手动地将一个字符串中 中文部分 转成16进制数
encodeURIComponent 则是将这个 字符串 的中文和 符号 转成16进制 符号包括 & ? :
parseInt(); //将String类型的字符串转换成整数,从左到右转, 如果一开始有能转换的数, 后面遇到不能转的字符, 则停止转换, 返回已转部分。 如果一开始就遇到不能转的字符, 则返回 NaN
parseFloat();
isNaN(); //判断一个对象或基本类型是不是对象
因为NaN之间是无法比较的, 所以不能用 xxx == NaN 返回的结果来判断 xxx是不是NaN, 这个比较永远返回false
如果要判断 xxx是不是NaN只能用 isNaN(xxx); 返回的结果来判断
eval(); // 解析运行方法
eval( "1 + 1" ); //会解析运行 “”里面的js代码 返回 2
数组对象
创建对象:三种创建方式
var arr1 = [1, 2, 3, 4];
var arr2 = new Array(1, 2, 3, 4);
var arr3 = new Array(4); //创建对像时, 如果只传进一个参数并且是数字, 则该参数作为数组的初始长度
属性 数组长度 arr1.length();
方法:
pop //弹栈 将栈顶元素弹出
push //压栈 将一个元素放进栈中
reverse //数组反转, 反转后数组不会恢复
sort //排序 =》如果直接调用sort(), 不指定参数, 则按照默认排序方式排序, 字符串的排序方式
参数为一个函数, 该函数作为一个比较器 例如:
function fun(a , b){
return a-b;
}
arr1.sort(fun);
这样指定参数后, 排序会按照从小到大排序
数组类型的特点:1、数组中可以是任意元素, 没有规定特定的数据类型
2、数组的长度可以随时改变, 元素如果没有初始化, 则默认为undifined
Date对象
创建:
var date = new Date(); 也可以传进一个参数, 该参数作为毫秒, 在1970年1月1日 0时0分0秒开始后的毫秒
var date = new Date(123456789);
RegExp正则对象
创建:
参数1:正则表达式
参数2:匹配模式, g代表全局的, i代表忽略大小写, 也可以同时使用gi
var reg1 = new RegExp("e", "g");
var reg2 = /e/g; 简便写法
方法:text("xxx");
reg2.text("xxx"); //会判断xxx是否符合正则表达式, 如果符合返回true 否则返回false
String 与 正则结合的方法
String str = "hello";
str.split(reg2); //对字符串进行按正则表达式分割
str.replace(reg2, "x"); //将字符串中符合正则表达式的子串替换为 x
str.match(reg2); //对字符串进行匹配, 如果符合正则表达式的, 就返回, 如果找不到则返回 null
str.search(reg2); //查找字符串中正则表达式出现的位置
Bom
browse object model
window对象
获取:由浏览器创建, 当浏览器加载页面时会自动创建window对象
直接window就可以使用
window中的方法:
alert
confirm 弹出确认框
prompt 弹出一个输入框
var b = confirm("您确定要删除吗?"); //弹出确认框, 点击确定, 返回true, 点击取消返回false
var str = prompt("请输入", 0); //弹出一个输入框, 第一个参数代表提示信息, 第二个参数代表默认输值, 返回 类型为string,如果点击取消返回null
location对象
属性:href :代表当前页面的url
方法:assign(); 加载新的文档
replace(); 用新的文档替换当前文档 -----与assign()的区别:assign();会产生新的历史记录, replace()会产生历史记录
reload(); 重新加载当前文档, 相当于刷新