js

<script type="text/javascript"> 
var x = 1; 
var y = 0; 
var z = 0; 
function add(n){n=n+1;} 
y = add(x); 
function add(n){n=n+3;} 
z = add(x); 
s=y+z;
</script>

求:
y的值是?
z 的值是?
s的值是?

我相信,肯定有同学会答错,当然,不是说他们不会,而是他们可能太大意了!

我们首先看function add,两个add都没有返回值,而我们知道,没有明确返回值的,全部返回undefined,所以,y和z都会是undefined,那么s自然也就不会是一个数字了,没错,s应该是NaN。

假如我们将题目改一下呢?如下:
<script type="text/javascript"> 
var x = 1; 
var y = 0; 
var z = 0; 
function add(n){return n=n+1;} 
y = add(x); 
function add(n){return n=n+3;} 
z = add(x); 
s=y+z;
</script>

两个function add都有返回值了,那么,y,z,s会是多少呢?
不错,y和z都是4,s是8,为什么y不是2而是4呢?因为在javascript中,直接通过function申明的函数,后面定义的,会影响到之前的引用,如下:

<script type="text/javascript">
function x(){alert(2)};
x();//output 3
function x(){alert(3)};
x();//output 3
</script>

如果是通过var来申明的函数会是什么情况呢?我们看看:

<script type="text/javascript">
var x = function(){alert(0)};
x();//output 0
var x=function(){alert(1)};
x();//output 1
x();//output 1
</script>

通过var申明的函数,后面定义的并不会影响前面的引用。

如果两种模式混合,又会是什么情况呢?

<script type="text/javascript">
function x(){alert(2)};
x();//output 3
var x = function(){alert(0)};
x();//output 0
var x=function(){alert(1)};
x();//output 1
function x(){alert(3)};
x();//output 1
</script>

结果是这样的,你猜到了吗?

通过function定义的函数,后面定义的,照旧影响了前面的引用,但是不能改变通过var申明函数后的引用,反而,通过var申明的函数,改变了后来通过function申明函数之后的引用。

所以,如果:
<script type="text/javascript">
var x=function(){alert(1)};
x();
function x(){alert(3)};
x();
</script>
后面的x()出来的也会是1。
View Code
for(i=0,j=0; i<10,j<6; i++,j++){
    k = i + j;
}
alert(k);       //弹出10


for(i=0,j=0; i<6,j<10; i++,j++){
    k = i + j;
}
alert(k);       //弹出18
View Code
(function(){var a=b=5})();

console.log(b);

console.log(a);

为何b有值,a没有

b=5是全局变量,var a=b是局部变量所以a在外部是访问不到的
View Code
var scope = 'global';  
    var f = function() {  
        console.log(scope); // 输出 undefined  
        var scope = 'f';  
    }  
    f();  
View Code
三种强制类型转换:String(),Boolean(),Number();
2种隐式类型:+和-
View Code
$arr1=array("dog","cat","bird");

$arr2=array("people","dog","mouse");

$arr = array_unique(array_merge($arr1,$arr2));

var_dump($arr);
View Code

 

posted @ 2018-06-14 22:11  nick560  阅读(96)  评论(0编辑  收藏  举报