关于JS的日常工作总结
1 .js == 没有传递性:
var a='',b='0',c=0
b==c; //true
a==c; // true
a==b; // false
2.js判断是否为数字
isNaN('12346543'); //false
isNaN('12346543q'); //true
isNaN(' '); //false 需要自行判断
a: var b=function(a){a=a+'';
if(isNaN(a)||a.startsWith(' ')||a===''){
console.log('!number')}else{console.log('number')
}}
b: function check(s){
var temp=/^\d+(\.\d+)?$/;
if(temp.test(s)==false)
console.log("输入错误");
}
3.查看jQuery版本
$.fn.jquery
4.input元素实时监听
$(function()
{
var jsUserName = "";
if($.browser.msie) // IE浏览器
{
$("#userName").get(0).onpropertychange = setJsUserName;
$("#jsUserName").get(0).onpropertychange = handle;
}
else // 其他浏览器
{
var intervalName; // 定时器句柄
$("#userName").get(0).addEventListener("input",setJsUserName,false);
// 获得焦点时,启动定时器
$("#userName").focus(function(){
intervalName = setInterval(handle,1000);
});
// 失去焦点时,清除定时器
$("#userName").blur(function()
{
clearInterval(intervalName);
});
}
// 设置jsUserName input的值
function setJsUserName()
{
$("#jsUserName").val($(this).val());
}
// jsUserName input的值改变时执行的函数
function handle()
{
// IE浏览器此处判断没什么意义,但为了统一,且提取公共代码而这样处理。
if($("#jsUserName").val() != jsUserName)
{
$("#toolTip").remove();
$("#jsUserName").parent().append("<span id='toolTip'>看到这里的信息表明,通过js改变input的值也能响应相应事件:<span style='color:red;'>" + $("#jsUserName").val() + "</span></span>");
jsUserName = $("#jsUserName").val();
}
}
});
5.&& || 返回值
&&
首先计算其左边的表达式,如果它的值为false或可被转换为false(null、NaN、0或undefined),那么将返回左边表达式的值,否则,它将计算右边的表达式, 并返回这个表达式结果作为 &&运算的结果。
||
首先计算其左边的表达式,如果它的值不为false或不可被转换为false(null、NaN、0或undefined),那么将返回左边表达式的值,否则,它将计算右边的表达式, 并返回这个表达式结果作为||运算的结果。
6.js闭包计数:
var setup=function(){
var count=0;
return function(){
return count=count+1;
}
}
var next=setup();
next()
1
next()
2
next()
3
next()
4
7.执行后自销毁:
function a(){
a=undefined ;
return 100 ;
}//也可用于第一次使用时初始化在调用;
function a(){ var b=1; a=function(){alert(b)} ;}
//不可复制给其他变量。否则失效
即时函数
(function(){
alert('123')
}())
8.js a=b:
var a={},b=a;
a.a=100;
b.a//100
a={a:200};
b.a//100
9.计时器
<html>
<head>
<script>
x = 0
y = 0
function count1() {
x = x + 1
document.display1.box1.value = x
meter1 = setInterval("count1()", 1000)
}
function count2() {
y = y + 1
document.display2.box2.value = y
meter2 = setInterval("count2()", 1000)
}
</script>
</head>
<body bgcolor=lightcyantext =red>
<p>
</br>
<form name=display1>
<input type="text" name="box1" value="0" size=4>
<input type=button value="停" onclick="clearInterval(meter1)">
<input type=button value="继续" onclick="count1() ">
</form>
<p>
<form name=display2>
<input type="text" name="box2" value="0" size=4>
<input type=button value="停" onclick="clearInterval(meter2) ">
<input type=button value="继续" onclick="count2( ) ">
</form>
<script>
count1()
count2()
</script>
</body>
</html>
10. for if switch 等方法不会创建新的作用域:
for(var i=0;i<10;i++){
for(var i=0; i<10;i++){
var abc=100;
console.log('in'+i)
}
console.log('out'+i)
}
VM529:5 in0
...
VM529:5 in9
VM529:7 out10
abc //100