禁用按钮
//原生JavaScript
document.getElementById("btn").disabled = true;
document.getElementById("btn").setAttribute("disabled","true");
//jQuery实现
$("#btn").disabled = true;
$("#btn").attr("disabled","disabled");
$("#btn").removeAttr("disabled");
运算符——除号
其实在JavaScript中除号表示的就是普通的除法
另外:原始类型是指null、undefined、string、number、Boolean
正则表达式的方法
- exec() 用来检测字符串中与正则表达式匹配的值。返回的是一个数组,里面存放的是匹配的结果。如果未找到匹配的值,则返回null
- test()检测一个字符串是否匹配某个正则表达式,匹配成功返回true,否则返回false
- compile()方法可以在脚本执行过程中,编译正则表达式,也可以改变已有表达式
闭包、函数等
输出的结果是:4400 4401 4399 4400
首先是作用域,result和result2两个的作用域不同,所以两个函数中n互不影响,返回的都是4400,还有就是闭包。这里要了解一下闭包的两个用途:1.读取到函数内部的变量2.让这些变量永远保存在内存中,这里 用到了第二个性质,所以返回了4401.返回的对象中,在这个匿名对象中,属性n和方法add是互不相关的,即使在闭包add中改变了变量n的值,result.n的值依然不变。
立即执行函数
output(typeof (function() {output(“Hello World!”)})());
- 执行立即执行函数,输出Hello World!
- 函数没有返回值,所以为undefined
Es6
结果:i not defined,TypeError,3,12,4
JavaScript的hoisting机制
var foo = {n:1};
(function(foo){ //形参foo同实参foo一样指向同一片内存空间,这个空间里的n的值为1
var foo; //优先级低于形参,无效。
console.log(foo.n); //输出1
foo.n = 3; //形参与实参foo指向的内存空间里的n的值被改为3
foo = {n:2}; //形参foo指向了新的内存空间,里面n的值为2.
console.log(foo.n); //输出新的内存空间的n的值
})(foo);
console.log(foo.n); //实参foo的指向还是原来的内存空间,里面的n的值为3.
Boolean值和Boolean对象
var x = new Boolean(false);
if (x) {
alert('hi');
}
var y = Boolean(0);
if (y) {
alert('hello');
}
- x是布尔对象,if会直接判定为true
- y为Boolen值,在if里的判断就是false值。
判断是否为字符串
return ((str instanceof String) || (typeof str).toLowerCase() == 'string');