关于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

原文地址:https://www.cnblogs.com/zwcai/p/7610668.html