์๋
ํ์ธ์ Foma ๐ป ์
๋๋ค!
์ผ๋ง ์ ์ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ก ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ๋งก๊ฒ ๋์์ต๋๋ค.
JavaScript๋ฅผ ๊ณต๋ถํ๋ค๋ณด๋ Swift๋ ๋น์ทํ ๊ฒ๋ ์๊ณ ์๋ ๋ถ๋ถ๋ ๋ง๋๋ผ๊ตฌ์.
๊ทธ๋์ ์๋ ์ต์ํ๋ Swift๋ฅผ ๊ธฐ์ค์ผ๋ก JavaScript์ ๋ค๋ฅธ ์ ์ ๋ํด์๋ง ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํฉ๋๋ค!
๋ฐ๋ก ์์ํ ๊ฒ์~
๋ณ์์ ์์
Swift์์ ์์๋ฅผ let,๋ณ์๋ฅผ var๋ก ์ด๋ค.
let name = "Fomagran" //์์
var name = "Fomagran" //๋ณ์
JavaScript๋ ์์๋ฅผ const,๋ณ์๋ฅผ let์ด๋ผ๊ณ ์ด๋ค.
์ด๋ฏธ ์์ let์ ์ต์ํด ์๋ ์ํ๋ผ์.. ์ค์๋ฅผ ๋ง์ด ํ ๊ฒ ๊ฐ๋ค.
const name = "Fomagran" //์์
let name = "Fomagran" //๋ณ์
์ถ๋ ฅ
Swift๋ ๊ฐ๋จํ๊ฒ print, ์์ ๋ณ์๊ฐ ์์ผ๋ฉด \(๋ณ์)๋ก ์ด๋ค.
print("์๋
ํ์ธ์. ์ ๋ \(name) ์
๋๋ค."
JavaScript๋ console.log๋ฅผ ์ด์ฉํ๊ณ ๋ณ์๋ฅผ ์ถ๋ ฅํ ๋ `(๋ฐฑํฑ)์ ์ฌ์ฉํด์ผ ํ๊ณ ${๋ณ์}๋ก ์ด๋ค.
console.log(`์๋
ํ์ธ์. ์ ๋ ${name} ์
๋๋ค.`)
์๋ฃํ
Swift๋ ์๋ฃํ์ ๋ณ์๋ ๋ฐํ๊ฐ ๋ฑ์ ๋ช
์ํ ์ ์๊ณ , ํด๋น ์๋ฃํ์ด ์๋ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋๋ค.
var number:Int = 9
number = "9" //์๋ฌ
JavaScript๋ ์๋ฃํ์ ๋ช
์ํ ์ ์๊ณ , ๋ค๋ฅธ ์๋ฃํ์ ๋ฃ์ด๋ ๊ด์ฐฎ๋ค.
๋ํ ์ซ์๊ฐ ๋ฌธ์๋ก ๋์ด์์ผ๋ฉด ์๋์ผ๋ก ๋ฐ๋๊ณ ์ซ์์ ๋ฌธ์๋ฅผ ๋ํ๋ ๋ฑ ์์ฒญ ์์ ๋ก์ด ํธ์ด๋ค.
let number = 9 number = "9" //OK "3"/"6" = 2 //OK "3" + 1 = 31 //OK
์ฆ๊ฐ ๊ฐ์
Swift๋ ++, -- ๊ฐ ์๊ณ += ๊ธฐํธ๋ฅผ ์จ์ผํ๋ค.
var number = 1
number += 1
JavaScript๋ ++ -- ๋ชจ๋ ๊ฐ๋ฅํ๋ค.
๋ค์ ์์ ๋ชจ๋ ๊ฐ๋ฅํ์ง๋ง ์์ ์ธ ๊ฒฝ์ฐ ๊ฐ์ด ๋ฐ๋ก ํ ๋น๋๋ ๋ฐ๋ฉด์ ๋ค์ ์ฐ๋ฉด ๊ฐ์ ๋ฐ๋์ง๋ง ๊ธฐ์กด๊ฐ์ ๋ฐํํ๋ค.
let number1 = 1
let newNumber1 = number1++ //2
let number2 = 1
let newNumber2 = ++number //1
์กฐ๊ฑด
Swift๋ ์กฐ๊ฑด๋ฌธ์ด๋ for,while ๋ฃจํ์์ ()์์ ์กฐ๊ฑด์ ๋ฃ์ง ์์๋ ๋๋ค.
if n > 0 { ... }
JavaScript๋ ๋ฐ๋์ ()์์ ์กฐ๊ฑด์ ๋ฃ์ด์ผ ํ๋ค.
if (n > 0) { ... }
ํจ์
Swift๋ ํจ์๋ฅผ ์์ฑํ ๋ func๋ก ์์ํ๊ณ , ํ๋ผ๋ฏธํฐ์ ์๋ฃํ์ ๋ฐ๋์ ๋ช
์ํด์ผ ํ๋ฉฐ, ๋ฐํ๊ฐ์ด ์๋์ง ์๋์ง,์๋ค๋ฉด ๋ฐํ๊ฐ์ ๋ํ ์๋ฃํ๋ ๋ฐ๋์ ๋ช
์ํด์ผ ํ๋ค.
func add(_ n1:Int,_ n2:Int) -> Int { ... }
JavaScript๋ function์ผ๋ก ์์ํ๊ณ , ํ๋ผ๋ฏธํฐ๋ ๋ฐํ๊ฐ์ ์๋ฃํ์ ๋ช
์ํ์ง ์๊ณ ๋ฐํ๊ฐ์ด ์๋์ง ์๋์ง๋ ์์ฑํ์ง ์์๋ ๋๋ค.
function add(n1,n2) { ... }
์ซ์ํ
Swift๋ ์์์ ์ด ์๋ ์๋์ ๋ฐ๋ผ Int,Float,Double๋ฑ์ผ๋ก ์์ฑํ๋ค.
let n1:Int = 1
let n2:Float = 1.1
let n3:Double = 1.11
let n4:Int = 1.1 //์๋ฌ
JavaScript๋ ๊ทธ๋ฅ ์ฐ๋ฉด๋จ.
const n1 = 1
const n2 = 1.1
const n3 = 1.11
๋ฌธ์ํ
Swift๋ ๋ฌธ์์ด์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ด startIndex,offsetBy ๋ฑ์ ์ฌ์ฉํ๋ ๋ฑ ๊ฝค ๋ณต์กํ๋ค.
์ด๋ฅผ ์ด์ฉํด์ ๋ถ๋ถ ๋ฌธ์๋ ์ถ์ถํ ์ ์๋ค.
let str = "abcdefg"
//์ฒซ ๊ธ์์์ 2๋ฒ์งธ ๊ธ์ ์์๋ด๋ ๋ฒ
print(str[str.index(str.startIndex, offsetBy: 2)]) //c
//2๋ฒ์งธ๋ถํฐ ๋๊น์ง ์ถ์ถํ๋ ๋ฒ
let startIndex:String.Index = str.index(str.startIndex, offsetBy: 2)
print(str[startIndex...]) //cdefg
JavaScript๋ ์ํ๋ ์ธ๋ฑ์ค๋ฅผ ๋๊ดํธ๋ก ๊ฐ์ ธ์ค๋ฉด ๋๊ณ slice๋ฅผ ์ด์ฉํด์ ๋ถ๋ถ ๋ฌธ์๋ฅผ ์ถ์ถํ ์ ์๋ค.
const str = "abcdefg"
//์ฒซ ๊ธ์์์ 2๋ฒ์งธ ๊ธ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ
print(str[2]) //c
print(str.slice(2)) //cdefg
๋ฐฐ์ด
Swift๋ ๋ฐฐ์ด ์ ์ธ์ ๋ฐฐ์ด ์์ ์ด๋ค ์๋ฃํ์ ๋ด๋์ง, ๋ช ์ฐจ์ ๋ฐฐ์ด์ธ์ง์ ๋ฐ๋์ ๋ช
์ํด์ผ ํ๋ค.
๊ฐ์ ์ถ๊ฐํ ๋๋ append๋ insert๋ฅผ ์ด์ฉํด์ผ ํ๋ค.
๋ํ ๋ฐฐ์ด์ ๊ธธ์ด๋ณด๋ค ์ ๊ฑฐ๋ ํฐ ๊ฐ์ ์ ๊ทผํ๊ฒ ๋๋ฉด ์๋ฌ๊ฐ ๋๋ค.
๋ฐฐ์ด์ ๋ณต์ฌํ๋ฉด ๊ฐ์ด ๋ณต์ฌ๋๋ค.
var array:[Int] = []
//์ถ๊ฐ
array.append(10) //[10]
print(array[1]) //์๋ฌ
print(array.remove(at:2)) //์๋ฌ
var array2 = array //๊ฐ ๋ณต์ฌ(์ฐธ์กฐX)
JavaScript๋ ์๋ฃํ,๊ธธ์ด์ ์๊ด์์ด ๋ฃ๊ฑฐ๋ ์ญ์ ํด๋ ๊ด์ฐฎ๋ค.
๊ฐ์ ์ถ๊ฐํ ๋๋ ๋๊ดํธ ์์ ์ํ๋ ์ธ๋ฑ์ค๋ฅผ ๋ฃ๊ณ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
๋ฐฐ์ด์ ๋ณต์ฌํ๋ฉด ์ฐธ์กฐ๊ฐ ๋๋ค.
let array = new Array()
//or
let array = []
//์ถ๊ฐ
array[0] = 10 //[1]
//์๋์ผ๋ก ๋น ๊ณต๊ฐ์ด ์๊น
array[3] = 30 //[ 1, <2 empty items>, 30 ]
delete array[5] //๋ฒ์๋ฅผ ๋์ด๊ฐ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์
let array2 = array //์ฐธ์กฐ๊ฐ ๋จ
๊ฐ์ฒด
Swift๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ Struct๋ก ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ์ฃผ์ด์ผ ํ๋ค.
ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ๋ ๋ถ๊ฐ๋ฅํ๋ค.
struct User {
let name:String
let age:Int
let isMan:Bool
func introduce() {
print("์๋
ํ์ธ์ ์ ๋ \(name)์ด๊ณ , ๋์ด๋ \(age)์ด ์
๋๋ค.")
}
}
let user = User(name:"Foma",age:27,isMan:true)
print(user.name) // Foma
JavaScript๋ ๋ณ์์ฒ๋ผ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๊ณ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ธ์ ๋ ์ถ๊ฐํ ์๋ ์๊ณ ์ญ์ ํ ์๋ ์๋ค.
๋ํ ์ปค์คํ
๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋๋ ํจ์์ ๊ฐ์ด ๋ง๋ค์ด์ค๋ค.
let user = new Object()
//or
let user = {}
//or
let user = {
name:"Foma",
age:27,
isMan:true,
introduce() {
console.log(`์๋
ํ์ธ์ ์ ๋ ${name}์ด๊ณ ,๋์ด๋ ${age}์ด ์
๋๋ค.`)
}
}
//ํ๋กํผํฐ ์ถ๊ฐ ๊ฐ๋ฅ
user.country = "Korea"
//ํ๋กํผํฐ ์ญ์ ๊ฐ๋ฅ
delete user.country
//๋ฉ์๋ ์ถ๊ฐ ๊ฐ๋ฅ
user.sayHi = function() {
console.log("Hi")
}
console.log(user.name) //Foma
//์ปค์คํ
๊ฐ์ฒด
function User(name,age,isMan) {
this.name = name
this.age = age
this.isMan = isMan
}
let user = new User("Foma",27,true)
console.log(user.name) //Foma
์ต์ ๋ ์ฒด์ด๋
Swift๋ ํด๋น ๊ฐ์ด ์์ ์๋ ์๊ณ ์์ ์๋ ์๋ค๋ ๊ฒ์ ๋ฏธ๋ฆฌ '?'๋ฅผ ์ด์ฉํด ๋ช ์ํ๋ฉด ์๋์ผ๋ก ์ต์ ๋ ์ฒด์ด๋์ด ํ์ดํ์ ์ ์ฉ๋ฉ๋๋ค.
let user:User?
print(user?.name) //Optional("Foma")
JavaScript๋ ๋ฏธ๋ฆฌ ๋ช
์ํ์ง ์์๋ ๋๋ฉฐ, ๊ฐ์ด ์์ ์๋ ์๊ณ ์์ ์๋ ์๋ ๋ณ์๋ ๋ฉ์๋์ '?'๋ฅผ ์ง์ ์ ์ฉํ๋ฉด ๋ฉ๋๋ค.
let user = new User()
user?.name //์์ผ๋ฉด Foma ์์ผ๋ฉด undefinded
//๋ฉ์๋๋ '?' ๋ถ์ด๊ณ ๋์ค์ ()๋ฅผ ํ์ดํํจ
user?.syaHi?.() //์์ผ๋ฉด Hi ์์ผ๋ฉด ์๋ฌด๊ฒ๋ ์คํ์๋จ.
๋งต
Swift์์ Dictionary๋ก ๋ฐ๋์ ํค์ ๋ฐธ๋ฅ์ ์๋ฃํ์ ๋ช ์ํด์ผ ํ๋ค.
๊ฐ์ ๋ฃ์ด์ฃผ๊ฑฐ๋ ๊ฐ์ ธ์ฌ ๋ ๋๊ดํธ๋ฅผ ์ฌ์ฉํ๊ณ , nil์ ์ด์ฉํ์ฌ ์ญ์ ๋ฅผ ํ๋ค.
๋ง์ฝ ํค๊ฐ์ด ์ ํจํ์ง ์๋ ๊ฐ์ ์ ๊ทผํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
var dic:[Int:String] = [:]
//or
var dic:[Int:String] = [1:"abc"]
//๊ฐ ์ถ๊ฐ
dic[2] = "def"
//๊ฐ ์ญ์
dic[2] = nil
print(dic[3]) //์๋ฌ
JavaScript๋ Map์ผ๋ก ๊ฐ์ ๋ฃ์ด์ค ๋ set, ๊ฐ์ ์ฝ์ ๋ get ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉฐ ์ญ์ ํ ๋ delete๋ฅผ ์ด์ฉํ๋ค.
//๋งต ์ด๊ธฐํ
let map = new Map()
//๊ฐ ๋ฃ์ด์ฃผ๊ธฐ (key,value)
map.set(1,"one")
//๊ฐ ๊ฐ์ ธ์ค๊ธฐ
map.get(1)
//๊ฐ ์ญ์ ํ๊ธฐ
map.delete(1)
์
Swift์์ Set์ <์๋ฃํ> ๊ณผ ๊ฐ์ด ๋ช ์ํด์ผ ํ๋ฉฐ ๊ฐ์ ๋ฃ์ ๋ insert๋ฅผ ๊ฐ์ ์ญ์ ํ ๋ remove๋ฅผ ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ค.
์๋ ๊ฐ์ ์ญ์ ํ ์ ์๋ฌ๊ฐ ๋๋ค.
var set:Set<Int> = Set()
//๊ฐ ๋ฃ์ด์ฃผ๊ธฐ
set.insert(1)
//๊ฐ ์ญ์ ํ๊ธฐ
set.remove(1)
//์๋ ๊ฐ
set.remove(2) //์๋ฌ
JavaScript๋ add๋ฅผ ์ด์ฉํด์ ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ delete๋ฅผ ์ด์ฉํด์ ๊ฐ์ ์ญ์ ํ๋ฉฐ ์๋ ๊ฐ์ ์ญ์ ํ๋๋ผ๋ ์๋ฌ๊ฐ ๋์ง ์๊ณ ์๋ฃํ์ ์๊ด์์ด ๊ฐ์ ๋ฃ์ ์ ์๋ค.
let set = new Set()
//๊ฐ ๋ฃ์ด์ฃผ๊ธฐ
set.add(1)
set.add("a")
//๊ฐ ์ญ์ ํ๊ธฐ
set.delete(1)
set.delete(2) //OK
์ค๋์ ์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ Swift์ JavaScript์ ๊ธฐ์ด๋ฌธ๋ฒ์ ์ฐจ์ด์ ์ ๋ํด ์์๋ณด์์ต๋๋ค.
๋์ฒด์ ์ผ๋ก Swift๊ฐ ์กฐ๊ธ ๋ ์๊ฒฉํ๊ณ JavaScript๊ฐ ์กฐ๊ธ ๋ ์์ ๋กญ๋ค๊ณ ๋๊ผ์ต๋๋ค.
ํน์๋ผ๋ ํ๋ฆฐ ์ ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
Reference
๋ชจ๋ JS ์ง์์ ๋ชจ๋ JavaScript ํํ ๋ฆฌ์ผ์ ํตํด ํ์ตํ์์ต๋๋ค.
'๐ Language > Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํด๋์ค(Class) ๊ธฐ๋ณธ ๋ฌธ๋ฒ๊ณผ ์์ (0) | 2022.02.12 |
---|---|
[JS] ํ๋กํ ํ์ (Prototype) ๋ค๋ค๋ณด๊ธฐ (0) | 2022.02.12 |
[JS] ํ๋กํผํฐ ์ต์ (ํ๋๊ทธ) ๋ค๋ฃจ๊ธฐ(Property Flag) (0) | 2022.02.12 |
[JS] JSON๊ณผ ๊ฐ์ฒด ๋ค๋ฃจ๊ธฐ (0) | 2022.02.05 |
[JS] ๊ตฌ์กฐ๋ถํด(Destructuring) (feat. ์ฝ๊ฒ ๋ณ์ ๋ง๋ค๊ธฐ) (0) | 2022.02.05 |
๋๊ธ