javascript - switch...case...
問題描述
export const setID = (v) => { console.log(’執(zhí)行setID’,v); let l = v.length; switch(l) { case l < 6 : console.log(’qq’); break; default: console.log(’11111’); }}
v是傳入的字符串,這段代碼第一個console正常執(zhí)行,第二個console無論任何情況都不執(zhí)行,現(xiàn)在可以肯定的是我的switch...case...出了問題,求教問題在哪里
問題解答
回答1:改成下面這個
const setID = (v) => { console.log(’執(zhí)行setID’,v); let l = v.length; switch(l < 6) { case true : console.log(’qq’); break; default: console.log(’11111’); }}
不過你這個完全可以用一個if語句:
if (l < 6) { console.log('qq');} else { console.log('1111');}
按照原先的寫法應(yīng)該是l和l < 6是否相等,l是一個整數(shù),表示字符串的長度,l<6是一個布爾值,整數(shù)和布爾值是不全等的,所以永遠都會走default語句;原先寫法的誤區(qū):不是case語句后面的為true就會執(zhí)行,而是switch表達式里面的內(nèi)容l和case語句后面的內(nèi)容l<6全等時才匹配;假設(shè)v='111',此時l=3 l<6為true,但是3!==true,所以走的是default語句。
回答2:你的l確定是小于6的?
switch(n){case 1: 執(zhí)行代碼塊 1 break;case 2: 執(zhí)行代碼塊 2 break;default: n 與 case 1 和 case 2 不同時執(zhí)行的代碼}回答3:
export const setID = (v) => { console.log(’執(zhí)行setID’,v); let l = v.length; switch(true) { case l < 6 : console.log(’qq’); break; default: console.log(’11111’); }}
相關(guān)文章:
1. 淺談vue生命周期共有幾個階段?分別是什么?2. index.php錯誤,求指點3. 視頻 - html5 video的autoplay 在智能手機上不運作?4. javascript - 百度坐標(biāo),返回目標(biāo)附近有哪些坐標(biāo)5. css3 - 使用less編譯css后,后期的項目中l(wèi)ess是直接放在項目文件中,后期如何維護呢6. css3 - 在css里面,樣式不生效問題7. node.js - 在阿里云搭建vue環(huán)境后npm run dev 沒有看到vue歡迎頁面而是 UnhandledPromiseRejection8. javascript - Jquary的contains如何做到精準(zhǔn)匹配9. html5 - 前端面試碰到了一個緩存數(shù)據(jù)的問題,來論壇上請教一下10. javascript - ui-router AngularJS url顯示正常 頁面沒有變化?
