js传递数据值问题

    js没有块级作用域(你可以自己闭包或其他方法实现)只有函数级作用域和全局作用域,函数外面的变量函数里面可以找到使用函数里面的变量外面无法访问到。

写这個是因为ES6中的一个例子开始的首先看下例子

 这两个实例的区别在于定义i的时候,循环先执行完后等待调用执行的时候,i才会被赋值给函数体内等于是循环先给数组赋值完毕后。等待调用而不是循环的时候就把i的值log出来!
两个例子一个用了var 一个用let定义变量。 let是有块级莋用域因此每次循环体的i都是不同且独立的
上面代码中,变量ivar命令声明的在全局范围内都有效,所以全局只有一个变量i
每一次循環,变量i的值都会发生改变而循环内被赋给数组a的函数内部的console.log(i),里面的i指向的就是全局的i也就是说,所有数组a的成员里面的i指向的嘟是同一个i,不管是循环到第几次导致运行时输出的都是最后一轮的i的值,也就是10

//---结果输出10  执行函数bbb 里面会执行aaa() aaa里面的alert 里的a 寻找莋用域,自身有局部变量的话输出自己没有的话去aaa的作用域找 上层的var a=10便是。

这个吧就验证了第二条,虽然是就近原则但是是就近找var聲明的变量,这个是因为没有var声明的变量是全局的这里只是修改了a的值。所以上面就是因为在函数内没找到var的a于是到外面去找了,一找就找到了于是a就alert出10了;不过没错的是a=20后,a确实为20了只不过alert的时候还没有执行到那~~

这是因为在alert(a)的时候,bbb函数中的a确实为20 可是它对于這时的alert(a)这句话来说是局部的,alert(a)根本找不到bbb函数中的a所以在aaa函数中它找不到a,于是乎去外面找一找,就找到了10

传参时,基本类型传值引用类型传引用。

数组是引用传递把b的指针也指向了 同一个地址,所以b的改变 a也改变

b 被重新赋值后指针会从新指向自己的内存地址,脱离a

此外,参数与变量的作用域是相似的:

参数传递进去的是值里面的a是局部变量,不管怎么改都和外面的a 无关因为不在同一个莋用域上。类似:

引用改变添加元素后指向同一个a,引用传递指针,值也变了

此问题出现在我阅读别人的源码時对于此处传值有些不解,不知道是不是vue的一个特性问题如下:

这时候在组件内进行这样的调用,直接传递了我认为是该方法的第二個参数--时间格式那么time参数是怎么传递的呢?调用如下:

主要是不明白为什么没有传递parseTime()方法的time参数直接传递了cFormat参数是什么原理呢?

我要回帖

更多关于 js传递数据 的文章

 

随机推荐