JSP ์ž‘์—… ์ค‘ login() ํ•จ์ˆ˜๊ฐ€ ๋‘๋ฒˆ ํ˜ธ์ถœ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

<!-- ๊ธฐ์กด ์ฝ”๋“œ (type ๋ฏธ์ง€์ •) -->
<button onclick="login();" style="cursor:pointer; border:0px;">LOGIN</button>

 

login() ํ•จ์ˆ˜ ๋‚ด๋ถ€๋ฅผ ๋ณด๋ฉด, ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฒ€์ฆ ํ›„

document.f.submit();์„ ํ˜ธ์ถœํ•˜์—ฌ ํผ์„ ์ œ์ถœํ•œ๋‹ค.

function login() {
    if (document.getElementById('id').value == '') {
        alert('์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.');
        return;
    }

    if (document.getElementById('pwd').value == '') {
        alert('๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.');
        return;
    }

    document.f.submit();
}

 

์ด๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์›์ธ์€ ๋ฒ„ํŠผ ํƒœ๊ทธ์˜ ๊ธฐ๋ณธ ๋™์ž‘์ด submit ํƒ€์ž…์œผ๋กœ ์ธ์‹๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

(<button> ํƒœ๊ทธ์˜ ๊ธฐ๋ณธ type์€ submit)

 

 

 

<button> ํƒœ๊ทธ์˜ ๊ธฐ๋ณธ type์ธ submit์œผ๋กœ ํผ ์ œ์ถœ์ด ๋˜๊ณ ,

login() ๋‚ด์—์„œ document.f.submit();์„ ํ˜ธ์ถœํ•˜์—ฌ ํผ์ด ๋‘ ๋ฒˆ ์ œ์ถœ๋œ๋‹ค.

 

๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ type์ด ์•„๋‹Œ type="button"์„ ํ†ตํ•ด ํƒ€์ž…์„ ๋ช…์‹œํ•ด์ฃผ๋ฉด

๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ณธ ํผ ์ œ์ถœ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

<!-- type ๋ช…์‹œ -->
<button type="button" onclick="login();" style="cursor:pointer; border:0px;">LOGIN</button>

 

 

 

์ด ๋ฌธ์ œ๋Š” JSP๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ผ๋ฐ˜์ ์ธ HTML + JavaScript ํ™˜๊ฒฝ์—์„œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠนํžˆ ์ด๋Ÿฐ ๋ถˆํ•„์š”ํ•œ ํ•จ์ˆ˜ ์ค‘๋ณต ํ˜ธ์ถœ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์ž…์„ ๋ช…์‹œํ•˜์ž ๐Ÿ˜‰

'Frontend > JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JavaScript] var, let, const ์ฐจ์ด  (0) 2022.07.20

๊ธฐ์กด JavaScript์—์„œ๋Š” var๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณ€์ˆ˜ ์„ ์–ธ์„ ํ–ˆ๋‹ค.

๊ทธ ํ›„ ES6์—์„œ let๊ณผ const๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๊ณ , ์ด ๋‘˜์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค.

 

๊ทธ๋Ÿผ ์™œ var๋ฅผ ๋‘๊ณ  let๊ณผ const๊ฐ€ ๋‚˜์™”๊ณ , ์ด ๋‘˜์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?


1. var์˜ ๋‹จ์ 

๋จผ์ € var ํ‚ค์›Œ๋“œ๋Š” ํฌ๊ฒŒ ๋‹จ์  ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

1. ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„์น˜ ์•Š์€ ๊ฐ’ ๋ฐ˜ํ™˜์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
2. ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.
3. ๋ณ€์ˆ˜ ์„ ์–ธ ์ด์ „์— ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋”๋ผ๋„ undefined๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

 

ES6์—์„œ ๋‚˜์˜จ let, const ํ‚ค์›Œ๋“œ๋Š” ์œ„ ์„ธ ๊ฐ€์ง€ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•ด์ค€๋‹ค.

 

 

 

2. ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹ ์ฐจ์ด

1. var (์ค‘๋ณต ์„ ์–ธ O)

var name = 'apple'
console.log(name) // apple

var name = 'orange'
console.log(name) // orange

์ค‘๋ณต ์„ ์–ธ ๊ฐ€๋Šฅ

 

์œ ๋‹›ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ๋Š” ๊ฐ๊ฐ ๋‹ค๋ฅด๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์œผ๋‹ˆ ํŽธ๋ฆฌํ•˜์ง€๋งŒ,

์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์–ด๋””์—์„œ ์–ธ์ œ ์–ด๋–ป๊ฒŒ ์„ ์–ธ์ด ๋˜์—ˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค๊ณ 

์˜๋„ํ•˜์ง€ ์•Š์€ ๊ฐ’์ด ํ• ๋‹น ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

 

 

2. let (์ค‘๋ณต ์„ ์–ธ X, ์žฌํ• ๋‹น O)

let name = 'apple'
console.log(name) // apple

let name = 'orange'
console.log(name) // Uncaught SyntaxError: Identifier 'name' has already been declared

์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ

 

let name = 'apple'
console.log(name) // apple

name = 'orange'
console.log(name) // orange

์žฌํ• ๋‹น ๊ฐ€๋Šฅ

 

 

3. const (์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋™์‹œ ์ง„ํ–‰, ์ค‘๋ณต ์„ ์–ธ X, ์›์‹œ๊ฐ’ ์žฌํ• ๋‹น X, ๊ฐ์ฒด ์žฌํ• ๋‹น O)

const name; // output: Uncaught SyntaxError: Missing initializer in const declaration
const name = 'apple'

์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋™์‹œ ์ง„ํ–‰

 

const name = 'apple'
console.log(name) // apple

const name = 'orange'
console.log(name) // Uncaught SyntaxError: Identifier 'name' has already been declared

์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ

 

const name = 'apple'
console.log(name) // apple

name = 'orange'
console.log(name) // Uncaught TypeError: Assignment to constant variable.

์›์‹œ๊ฐ’ ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ

 

const name = { one: 'apple' }
name.one = 'orange'
console.log(name) // { one: 'orange' }

๊ฐ์ฒด ์žฌํ• ๋‹น ๊ฐ€๋Šฅ

 

 

 

3. ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ ์ฐจ์ด

1. var

var a = 1

if (true) {
  var a = 2
}

console.log(a) // 2

ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ var ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด a๋ฅผ ์„ ์–ธํ•˜๋ฉด ์ด๋Š” ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.

if๋ฌธ ์•ˆ์—์„œ a๊ฐ€ ์ค‘๋ณต ์„ ์–ธ๋˜๊ณ , ์ถœ๋ ฅ๊ฐ’์€ 2๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค.

 

์‹ค๋ฌด ํ”„๋กœ์ ํŠธ์˜ ๊ธด ์ฝ”๋“œ๋“ค์—์„œ ์ด๋Ÿฐ ์ƒํ™ฉ์ด ์˜จ๋‹ค๋ฉด, ์˜๋„์น˜ ์•Š์€ ๊ฐ’์ด ์ถœ๋ ฅ๋˜๊ฒŒ ๋œ๋‹ค.

 

 

2. let, const

// const ํ‚ค์›Œ๋“œ๋„ ๋™์ผ
let a = 1

if (true) {
  let a = 2
}

console.log(a) // 1

var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ–ˆ์„ ๋•Œ, ์ถœ๋ ฅ๊ฐ’์ด 2์˜€์ง€๋งŒ

let, const๋กœ ํ•จ์ˆ˜ ์•ˆ์— ์„ ์–ธํ•˜๊ฒŒ ๋˜๋ฉด ์ง€์—ญ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„๋‹ค.

๊ทธ๋ž˜์„œ ์ „์—ญ์—์„œ ์ถœ๋ ฅํ•˜๋ฉด ์ „์—ญ์— ์žˆ๋Š” 1์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

4. ํ˜ธ์ด์ŠคํŒ… ์ฐจ์ด

1. var

console.log(name); // undefined
var name;

var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋™์‹œ์— ์ง„ํ–‰๋˜์–ด

name์— ์•”๋ฌต์ ์œผ๋กœ undefined๋ฅผ ํ• ๋‹นํ•˜์—ฌ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

 

๋ณ€์ˆ˜ ์„ ์–ธ์ด ๋Ÿฐํƒ€์ž„์— ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ๊ทธ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋จผ์ € ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—

var ํ‚ค์›Œ๋“œ์— ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด ์–ธ์ œ๋‚˜ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๋ณ€์ˆ˜ ์ƒ์„ฑ ๋‹จ๊ณ„ : ์„ ์–ธ ๋‹จ๊ณ„ > ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ > ํ• ๋‹น ๋‹จ๊ณ„

 

 

2. let

console.log(name); // Uncaught ReferenceError: name is not defined
let name;

let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์ง„ํ–‰๋œ๋‹ค.

๋Ÿฐํƒ€์ž„ ์ด์ „์— ์„ ์–ธ ๋‹จ๊ณ„๊ฐ€ ์‹คํ–‰๋˜์ง€๋งŒ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋ฉด

์•„์ง ์ •์˜๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ฐธ์กฐ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€๊ฐ€ ๋œฌ๋‹ค.

 

๊ทธ๋ž˜์„œ let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์Šค์ฝ”ํ”„์˜ ์‹œ์ž‘ ์ง€์ ๋ถ€ํ„ฐ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ ์‹œ์ž‘ ์ง€์ ๊นŒ์ง€

๋ณ€์ˆ˜ ์ฐธ์กฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€(Temporal Dead Zone; TDZ) ๊ตฌ๊ฐ„์— ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

3. const

console.log(constName) // Uncaught ReferenceError: Cannot access 'constName' before initialization
const constName = 'apple'

const ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋™์‹œ์— ์ง„ํ–‰๋œ๋‹ค.

๋Ÿฐํƒ€์ž„ ์ด์ „์—๋Š” ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ผ

์ ‘๊ทผ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€๊ฐ€ ๋œฌ๋‹ค.

+ Recent posts