入坑集锦(三)

1.参数传递顺序
Javascript中参数传递从左到右(java中也一样), 可以通过以下代码做如下验证。

<script type="text/javascript">
function test(a,b)
{
  console.log("a=",a);
  console.log("b=",b);
}

var a = 1;
test(a,a++); //a=1,b=1
</script>
<script type="text/javascript">
function test(a,b)
{
  console.log("a=",a);
  console.log("b=",b);
}

var a = 1;
test(a++,a);  //a=1,b=2
</script>

C语言中参数传递:从右到左

2.关于splice( )函数的理解:arr.splice()函数返回值并不是删除元素的数组,而是被删除的元素所组成的数组!

var aa = [1,2,3,4,5,6,7,8,9,10];
aa.splice(2,1)[0];  //取到要删除的原数组中的下标为2的函数
console.log(aa);  //[1,2,4,5,6,7,8,9,10]

如果将上面的第二段代码拆成两部分来写:

console.log(aa.splice(2,1)); //[3]
console.log(aa.splice(2,1)[0]); //此时应该是取到删除了3之后的arr中的第三个元素4

上面区分好概念后,终于对打乱数组的方法成功理解。下面的代码在学习时看到名为“守候”的博主文章,地址如下https://segmentfault.com/a/1190000009827940,里面介绍了一些js常用的方法包括数组去重(利用indexOf及对象法)。由于,第一次看的时候,没有看懂,因此加以记录。

<script type="text/javascript">
function upsetOrder(arrOld,num){
   var result=[];
   var arr;
   arr=Object.assign([],arrOld);
   for(var i=0;i<num;i++)
   {                    
     result.push(arr.splice(Math.floor(Math.random()*arr.length),1)[0]);//随着删除元素后,数组长度动态变化,不会发生获取到数组之外的元素
   }
   return result;
}
  var a = [1,2,3,4,5,6,7,8,9,10];
  alert(upsetOrder(a,10));
</script>

这里写图片描述

3.vue项目开发中,在route.js文件中定义的每一个路由对象都有其component属性,即是相关路径下对应界面的公共布局,最开始的项目中是用home.vue,后来学习别的项目时才注意到这一点,之前就理所当然得认为home.vue是项目的主界面。

4.Vue之router-link
正如vue-router部分文档所示,使用 标签进行路由跳转时,我们可以带上路由查询参数,如params或者是query,不过两者有些许差别,最为明显的即Url的后缀。

 <!-- 命名的路由,Url后缀为 /user/123 -->
  <router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>

  <!-- 带查询参数,下面的结果为 /register?plan=private -->
  <router-link :to="{ path: 'books', query: { q: '123' }}">books</router-link>

更为详细的举例,继续看下来:

//路由定义
const routes = [
  { name: 'user', path: '/user/:id', component: User },
  { path: '/books', component: Books }
]

// params使用场景
  <router-link :to="{ name: 'user', params: { id: 123 }}">User</router-link>
router.push({ // 此方式跳转
  name: 'user',
  params: {
    id: 123
  }
})
// 获取id
route.params.id // 123
router.push('/users/123') //实际上相当于
// 实际URL地址 => localhost:8080/users/123


// query使用场景
<router-link :to="{ path: 'books', query: { q: '123' }}">books</router-link>
router.push({ // 另一种方式跳转
  path: '/books',
  query: {
    q: 123
  }
})
// 获取query
route.query.q // 123
router.push('books?q=123') // 实际上相当于
// 实际URL地址 => localhost:8080/books?q=123

5.form标签的应用
form表单的提交事件绑定了一个跳转功能:
window.location.href=”https://www/baidu.com/”,然后一直跳转不成功。于是单步打断点调试:

这里写图片描述
上图所示,原来的效果是点击提交后,不发生跳转,但观察到url变了,故window.location不起作用,因为提交结果已经改变了url,相当于已经不是开始的界面了。于是,按照网上的解决办法——javascript 中设置window.location.href跳转无效问题解决办法,这种解决方法有三个,在返回末尾加了return false,于是结果如下,成功跳转至该界面。但是这种解决方法是阻止了表单的提交,没有达到我们想要提交表单的效果。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值