javascript中 if(变量)和if(变量=true)的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中 if(变量)和if(变量=true)的区别相关的知识,希望对你有一定的参考价值。
首先,变量=true这个是会出错的,因为变量被赋值为true了,正确写法变量==true。或者养成习惯,true==变量,将变量写在后面,就不容易出现赋值的错误了。if(判断表达式)
执行内容
如果判断表达式为true,则执行括号中的内容。
这里,变量如果不为0,null,undefined,false,都会被处理为true。只要变量有非0的值或是某个对象,数组,字符串,都会认为true
变量==true,变量为bool值,并且为true,才认为符合。 参考技术A var a;//定义一个变量没有初始化
if(a)alert(1) return;//这里不会执行,因为a没有值,所以为false;
a=0//这里给a赋值为0
if(a)alert(1) return;//在来执行这句话,因为a=0;0代表false,所以还是不执行;
a=1或者a=“123”;
if(a)alert(1) return;//这里a=除0以为的数,或者字符或者obj都表示为真,这里的alert就会执行!
在来看第二种情况;
var b;if(b=="")和if(b==null)这里谁会执行呢,当然是后面一种,因为b是没有定义值的,如果是var b="",这样的话就会执行第一种;
b = 1;
if(b==1)和if(b=="1")这里哪一种会执行呢,答案是两种都会执行!因为js的==表示的是数值相等;
谢谢,希望楼主可以理解!
还有就是楼主的这种情况:
var c;c=0;
if(c==false)会不会执行呢,答案是肯定的;
c=1;
if(c==true)也一样会执行!但是我们看下面这样会执行么?
c=2或者c="admin"
if(c==true)alert(1)这句话会执行么,答案是否定的,因为默认表示的是,0为false而1为true,对于其他的就没有这么定义,所以这里不会执行,当然如果你是这样if(c)那这里就会执行了!本回答被提问者采纳 参考技术B if(变量) 就看这个变量是true还是false,if语句可能为真也可能为假
if(变量=true)先赋值 变量=true,所以变量一直是true,这个if语句一直是真 参考技术C 应该是 变量 == true 吧
没有区别,js会自动把变量转换为bool,你也可以手动转换:!!变量 参考技术D 第二个应该是
if(变量==true)
第一个 既可以判断 true/false 也可以判断是否 null
第二个 就只能判断 true/false
JavaScript:在添加变量后使 If 语句调整到变量
【中文标题】JavaScript:在添加变量后使 If 语句调整到变量【英文标题】:JavaScript: Making an If statement adjust to a variable after adding to it 【发布时间】:2022-01-20 03:07:02 【问题描述】:我正在创建一个显示世界时钟的 HTML/JavaScript 页面,但是我遇到了一个问题,即时钟没有正确调整到上午/下午,也没有保持标准时间格式。我意识到这是因为使会话更改为 = 'PM' 的 if 语句仅适用于它获得的时区。此外,我的代码仅获取时间并将其放入加利福尼亚插槽,因为那是我所在的时区,因此如果您在太平洋时间以外的时区打开此代码,所有世界时钟都将不正确。是否可以将我的时钟保持为标准时间格式并且是正确的 AM 或 PM?
let clock = document.getElementById('clock');
function currentTime()
let date = new Date();
let hours = date.getHours();
let minutes = date.getMinutes();
let seconds = date.getSeconds();
let session = 'AM';
if (hours == 0)
hours = 12
if (hours > 12)
hours = hours - 12
session = 'PM'
minutes = (minutes < 10) ? "0" + minutes : minutes;
seconds = (seconds < 10) ? "0" + seconds : seconds;
let time = hours + ':' + minutes + ' ' + session;
document.getElementById('clock').innerText = time;
let york = (hours + 3) + ':' + minutes + ' ' + session;
document.getElementById('york').innerText = york;
let hawaii = (hours - 2) + ':' + minutes + ' ' + session;
document.getElementById('hawaii').innerText = hawaii;
let dubai = (hours + 12) + ':' + minutes + ' ' + session;
document.getElementById('dubai').innerText = dubai;
document.getElementById('seconds').innerText = ':' + seconds;
let london = (hours + 8) + ':' + minutes + ' ' + session;
document.getElementById('london').innerText = london;
let moscow = (hours + 12) + ':' + minutes + ' ' + session;
document.getElementById('moscow').innerText = moscow;
let paris = (hours + 9) + ':' + minutes + ' ' + session;
document.getElementById('paris').innerText = paris;
let tokyo = (hours + 17) + ':' + minutes + ' ' + session;
document.getElementById('tokyo').innerText = tokyo;
let t = setTimeout(function()
currentTime()
, 1000);
currentTime();
p line-height: 0.5em
<div id="container">
<div id="clockContainer">
<div id="titleContainer">
<p id="title">California <span id="clock" class='clock'></p>
</div>
<div id="titleContainer">
<p id="title">New York <span id="york" class='clock'></p>
</div>
<div id="titleContainer">
<p id="title">Hawaii <span id="hawaii" class='clock'></p>
</div>
</div>
<div id="clockContainer">
<div id="titleContainer">
<p id="title">Dubai <span id="dubai" class='clock'></p>
</div>
<div id="titleContainer">
<p id="title">Seconds <span id="seconds" class='clock'></p>
</div>
<div id="titleContainer">
<p id="title">London <span id="london" class='clock'></p>
</div>
</div>
<div id="clockContainer">
<div id="titleContainer">
<p id="title">Tokyo <span id="tokyo" class='clock'></p>
</div>
<div id="titleContainer">
<p id="title">Paris <span id="paris" class='clock'></p>
</div>
<div id="titleContainer">
<p id="title">Moscow <span id="moscow" class='clock'></p>
</div>
</div>
</div>
【问题讨论】:
【参考方案1】:您可以将Intl.DateTimeFormat 与各种选项一起使用,包括使用IANA representative location 指定的timeZone。您还可以使用formatToParts 获取组件,然后按照您喜欢的方式格式化它们,包括 12/24 小时时间和上午/下午,例如
function formatDate(date, loc)
let f = new Intl.DateTimeFormat('en',
year: 'numeric',
month: 'short',
day: 'numeric',
hour12: true,
hour: '2-digit',
minute: '2-digit',
timeZone: loc,
timeZoneName: 'long'
);
let year, month, day, hour, minute, dayPeriod, timeZoneName = f.formatToParts(date).reduce((parts, part) =>
parts[part.type] = part.value;
return parts;
, Object.create(null));
return `$day $month $year $hour:$minute $dayPeriod.toLowerCase() $timeZoneName`;
let d = new Date();
document.querySelectorAll('.clockTime').forEach(el =>
el.textContent = formatDate(d, el.dataset.loc)
);
body
font-family: sans-serif;
th
text-align: left;
<table>
<tr>
<th>Place<th>Date and time
<tr>
<td>Kiritimati <td class="clockTime" data-loc="Pacific/Kiritimati">
<tr>
<td>Lord Howe Is <td class="clockTime" data-loc="Australia/Lord_Howe">
<tr>
<td>India <td class="clockTime" data-loc="Asia/Kolkata">
<tr>
<td>Dubai <td class="clockTime" data-loc="Asia/Dubai">
<tr>
<td>London <td class="clockTime" data-loc="Europe/London">
<tr>
<td>Los Angeles <td class="clockTime" data-loc="America/Los_Angeles">
<tr>
<td>Midway Is<td class="clockTime" data-loc="Pacific/Midway">
</table>
唯一真正的问题是将 timeZoneName 设置为短时区名称并不能可靠地返回长时区名称的缩写。根据位置和语言,它可能会返回缩写或实际偏移量为 UTC/GMT±HH:mm。因此,如果您想要缩写的时区名称,最好自己获取全名并缩写(这并不总是时区名称的第一个字母,例如 Chatham Standard Time 是“ChSt”)。
【讨论】:
【参考方案2】:试试moment js库。
它将帮助您进行日期、时间管理、表格、计算等等。
祝你好运。
moment().format('MMMM Do YYYY, h:mm:ss a'); // December 17th 2021, 2:54:05 pm
moment().format('dddd'); // Friday
moment().format("MMM Do YY"); // Dec 17th 21
moment().format('YYYY [escaped] YYYY'); // 2021 escaped 2021
moment().format(); // 2021-12-17T14:54:05+09:00
https://momentjs.com/
【讨论】:
来自 momentJS 站点:momentjs.com/docs 和 dockyard.com/blog/2020/02/14/… 他们不再推荐使用 moment。而是看看在第一个链接中使用替代品【参考方案3】:您还可以尝试在日期对象上使用getUTCHours() 函数来标准化您从那里获取和工作的时间。
AM/PM 开关不适合您的原因是因为您只是在检查初始 hours
值。您应该检查所需的每个时区,并相应地添加 AM 或 PM 后缀。
例如:let york = (hours + 3) + ':' + minutes + ' ' + (hours + 3 > 12 ? "PM" : "AM");
我希望这会有所帮助。
【讨论】:
这如何帮助 OP 确定在特定位置是上午还是下午? @RobG 它没有,但它有助于 OP 标准化时间,以便它始终如一地出现在任何地方。 OP - 你可以这样做:let york = (hours + 3) + ':' + minutes + ' ' + (hours + 3 > 12 ? "PM" : "AM");
它应该会给你想要的效果。编辑:AM/PM 不起作用的原因是,如果初始 hours
变量 > 12,您只更改会话。您必须在每种情况下检查它,以便正确应用它。
您应该将该评论放入答案中。以上是关于javascript中 if(变量)和if(变量=true)的区别的主要内容,如果未能解决你的问题,请参考以下文章
我可以为javascript中if语句的结果分配一个变量吗? [复制]
为啥我不能在使用 Javascript 的 if 语句中重新分配这个变量? [复制]