iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 26
0
Modern Web

大家都在鐵人賽跑JS,這條鹹魚不只翻身還被煎得有點焦了,我們來點實務吧系列 第 26

三本柱大混戰 # 26 js的型別與運算子

終於來到鐵人賽最後的一個周末啦
偏偏現在又來到最重要的章節

那麼就不浪費看官們的時間
不浪費我的假日時間

文章介紹完馬上開始我們今天著正篇吧!!


工程師是最容易禍害一千年的職業之一
怎麼說呢
你今天寫了一個爛東西

運氣差一點可修的時間很少
別人要維修你的專案,必須先搞懂這片代碼海

運氣好一點可修的時間很多
乾脆整個專案重開,按照畫面有的功能重新寫一次

為了珍惜自己的業,與別人的生命
請不要寫糙code
可不可以不要寫糙 code 系列


python的崛起其實整個很神奇
但不可否認他的套件與別人寫好的東西真的很好用
java要開個檔案讀寫要寫個一大堆東西
python卻只需要短短幾行

初學者Python的應用實作 系列


python最重要的功能之一
(我都會寫一隻去爬伊莉,然後找maga的影片載點)
是的,不管你眼睛業障中看到了甚麼,這東西真的方便好用

Scrapy爬蟲與資料處理30天筆記 系列


文章簡單的介紹完了,我們開始js基本型別與運算子順序吧!!

part1 - js的型別

js有一個原生的方法typeof()
會出現以下的東西,我們稱作js的型別

  1. number (數字)

    • 可以進行運算
    • 當空時印出NaN
  2. boolean(true/false)

    • js的boolean各種花樣,丟甚麼東西出來都是true
    • 但只有底下這六種出來為false
    Boolean(false) // false
    Boolean(undefined) // false
    Boolean(null) // false
    Boolean(0) // false
    Boolean(NaN) // false
    Boolean('') // false
    
  3. string(字符串)

    • string沒什麼好說的,但對於字串的運算有比較特別的地方
    • 在運算中js會自動去偵測如果這個字串可以轉數字那麼在+以外的運算都會自動轉數字去算,如果無法則直接清空這個變數
    var a = "2"
    var b = 5
    console.log(a+b)//25
    console.log(a-b)//-3
    a="a"
    console.log(a+b)//NaN
    
  4. object(對象)

    • 在物件導向語言中任何東西都是一個Object
    • js中並沒有Array這個型態,如果
    typeof([1,2,3])//object
    
    • array即為一個物件預設key值為[0~array.length-1]
    • 為一個key/value的集合所組成
      • value可為方法
      • key值可為number、string
      • 但一般不會使用number為索引、浪費效能與不方便遍歷
      var arrayVal = [1,2,3]
      //等同於
      var arrayVal2 = {
          1:1,
          2:2,
          3:3
      }
      //一般Object
      var obj={
          person:{
              gender: '男',
              position: 'coder',
              info: {
                  weight: 90,
                  height : 200
              },
              dothing: function(time){
                  if(time==1700){
                      下班();
                  }
              }
          }
      }
      
  5. function(函數)

    • 只要這個字串中含有function()那麼typeof(var)便會出現function
    • 含有上面關鍵字的字串於變數名後加上()即可執行
    var fn = function(){
        console.log(1+2)
    }
    console.log(fn())
    //3
    console.log(fn)
    /*
        ƒ (){
            console.log(1+2)
        }
    */
    
  6. undefined(未定義)

    • 當記憶體切出後若一個變數沒有給值,undefined變為這個變數的預設值
    • 注意:不要給一個變數"undefined"會出現不可預測的錯誤
    • 而如果把一個變數賦值之後在清掉為null

part2 - js的運算子

在JS中有兩件事情決定了運算子的優先順序

  1. 優先性

    • 如同先乘除後加減,JS中也有自己一連串的優先性
    • 這邊直接附上表格(運算子優先序),因此不贅述
  2. 相依性

    • 當所有運算子優先順序都一樣時,由相依性判斷先後順序
    • 需要注意的是相依性有
      • 左到右稱為左相依性
      • 右到左稱為右相依性

比較需要注意的是右相依性的規則

  • 賦值運算(Assignment)
    var a = b = c = 5
    console.log(a)//5
    console.log(b)//5
    console.log(c)//5
    
    • 因為賦值屬性是由右至左,因此運算方式是將5賦值給c=>b=>a

其他都是偏考試一般不會在真實被實現的方法


上一篇
三本柱大混戰 # 25 今天不廢話,直接來用白話文說說文謅謅的js知識吧
下一篇
三本柱大混戰 # 27 JS不能多載?沒關係我們自己寫
系列文
大家都在鐵人賽跑JS,這條鹹魚不只翻身還被煎得有點焦了,我們來點實務吧31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言