分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

JS变量定义时连续赋值的坑!

发布时间:2023-09-06 02:22责任编辑:林大明关键词:暂无标签

在定义变量时,可以将值相同的变量采用连续赋值的方式,如下代码:

var a = b = c = ‘‘;

其实这里面有一个很大很大的坑,以代码说明问题:

<script language="javascript"> ???function test(){ ???????var i = 0; ???????_test(); ???????????????????????function _test(){ ???????????if(++i>2) return; ???????????????????????var a = b = ‘‘; // 这里连续赋值 ???????????for(var j=0; j<=2; j++){ ???????????????b = ‘a‘ + b; ????????????????_test(); ???????????} ?????????????console.log(‘b:‘+b); ???????} ???} ???test(); ???</script>
<script language="javascript"> ???function test(){ ???????var i = 0; ???????_test(); ???????????????????????function _test(){ ???????????if(++i>2) return; ???????????????????????var a = b = ‘‘; // 这里连续赋值 ???????????for(var j=0; j<=2; j++){ ???????????????b = ‘a‘ + b; ????????????????_test(); ???????????} ?????????????console.log(‘b:‘+b); ???????} ???} ???test(); ???</script>

上例中返回的结果为:

b:aaab:aaaaa

与我想像中的结果不一定,我想要的结果是:

b:aaab:aaa

所以,去掉连续赋值,改成逐个赋值,结果就正确了,代码如下:

<script language="javascript"> ???function test(){ ???????var i = 0; ???????_test(); ???????????????????????function _test(){ ???????????if(++i>2) return; ???????????????????????var a =‘‘, ?b = ‘‘; // 这里逐个赋值 ???????????for(var j=0; j<=2; j++){ ???????????????b = ‘a‘ + b; ????????????????_test(); ???????????} ?????????????console.log(‘b:‘+b); ???????} ???} ???test(); ???</script>

说重点:建议不要连续赋值!

JS变量定义时连续赋值的坑!

原文地址:https://www.cnblogs.com/wm218/p/9977070.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved