This page was translated from English by the community.Learn more and join the MDN Web Docs community.
void
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015년 7월.
void 연산자는 주어진 표현식을 평가하고undefined를 반환합니다.
In this article
시도해 보기
const output = void 1;console.log(output);// Expected output: undefinedvoid console.log("expression evaluated");// Expected output: "expression evaluated"void (function iife() { console.log("iife is executed");})();// Expected output: "iife is executed"void function test() { console.log("test function executed");};try { test();} catch (e) { console.log("test function is not defined"); // Expected output: "test function is not defined"}구문
void expression;설명
void는 값을 생성하는 표현식을 평가해서undefined를 반환합니다.
오직undefined 원시값을 얻기 위해void 0 또는void(0)처럼 사용하는 경우도 볼 수 있습니다. 이런 경우 전역undefined를 대신 사용해도 됩니다.
void 연산자의우선순위도 유념해야 합니다.그룹 연산자(괄호)를 사용하면void 연산자를 사용한 식의 평가 과정을 더 명확하게 보일 수 있습니다.
void 2 == "2"; // undefined == '2', falsevoid (2 == "2"); // void true, undefinedIIFE
즉시 실행 함수 표현식(IIFE)을 사용할 때void를 사용하면function 키워드를 선언문이 아니라 표현식처럼 간주하도록 강제할 수 있습니다.
void (function iife() { var bar = function () {}; var baz = function () {}; var foo = function () { bar(); baz(); }; var biz = function () {}; foo(); biz();})();JavaScript URI
#"/ko/docs/Web/JavaScript/Reference/Global_Objects/undefined">undefined가 아니라면 페이지의 콘텐츠를 반환 값으로 대체합니다.void 연산자를 사용하면undefined를 반환할 수 있습니다. 다음 예제를 확인하세요.
<a href="#">클릭해도 아무 일도 없음</a><a href="#"> 클릭하면 배경색이 녹색으로</a>참고: Arrow functions introduce a short-hand braceless syntax that returns an expression. This can cause unintended side effects by returning the result of a function call that previously returned nothing. To be safe, when the return value of a function is not intended to be used, it can be passed to the void operator to ensure that (for example) changing APIs do not cause arrow functions' behaviors to change. This ensures the return value of#"새지_않는_화살표_함수" >새지 않는 화살표 함수
button.onclick = () => void doSomething();doSomething changing fromundefined totrue will not change the behavior of this code.명세서
Specification ECMAScript® 2026 Language Specification>
# sec-void-operator>브라우저 호환성
같이 보기
- JavaScript
- 자습서:
- 참고서:
표준 내장 객체
- AggregateError
- Array
- ArrayBuffer
- AsyncDisposableStack
- AsyncFunction
- AsyncGenerator
- AsyncGeneratorFunction
- AsyncIterator
- Atomics
- BigInt
- BigInt64Array
- BigUint64Array
- Boolean
- DataView
- Date
- decodeURI()
- decodeURIComponent()
- DisposableStack
- encodeURI()
- encodeURIComponent()
- Error
- escape()지원이 중단되었습니다
- eval()
- EvalError
- FinalizationRegistry
- Float16Array
- Float32Array
- Float64Array
- Function
- Generator
- GeneratorFunction
- globalThis
- Infinity
- Int8Array
- Int16Array
- Int32Array
- InternalError비표준
- Intl
- isFinite()
- isNaN()
- Iterator
- JSON
- Map
- Math
- NaN
- Number
- Object
- parseFloat()
- parseInt()
- Promise
- Proxy
- RangeError
- ReferenceError
- Reflect
- RegExp
- Set
- SharedArrayBuffer
- String
- SuppressedError
- Symbol
- SyntaxError
- Temporal
- TypedArray
- TypeError
- Uint8Array
- Uint8ClampedArray
- Uint16Array
- Uint32Array
- undefined
- unescape()지원이 중단되었습니다
- URIError
- WeakMap
- WeakRef
- WeakSet
표현식 및 연산자
- 더하기 (+)
- 더하기 할당 (+=)
- 할당 연산자 (=)
- async function 표현식
- async function* 표현식
- await
- AND 비트연산(&)
- 비트 AND 할당 연산 (&=)
- 비트 NOT (~)
- OR 비트연산(|)
- Bitwise OR assignment (|=)
- Bitwise XOR (^)
- Bitwise XOR assignment (^=)
- class 식
- 쉼표 연산자
- 조건 (삼항) 연산자
- 감소 연산자 (--)
- delete 연산자
- 구조 분해 할당
- 나누기 (/)
- 나누기 할당 (/=)
- 동등 연산자(==)
- 거듭제곱 (**)
- 거듭제곱 할당 (**=)
- 함수 표현식
- function* expression
- Greater than (>)
- Greater than or equal (>=)
- 그룹 연산자
- import.meta
- import()
- in 연산자
- 증가 연산자(++)
- 부등 연산자(!=)
- instanceof
- 왼쪽 시프트 (<<)
- 왼쪽 시프트 할당 연산자 (<<=)
- Less than (<)
- Less than or equal (<=)
- 논리적 AND (&&)
- Logical AND assignment (&&=)
- 논리적 NOT (!)
- Logical OR (||)
- Logical OR assignment (||=)
- 곱하기 (*)
- 곱하기 할당 (*=)
- new operator
- new.target
- null
- Nullish coalescing assignment (??=)
- Nullish coalescing operator
- 객체 초기자
- 연산자 우선순위
- Optional chaining
- 속성 접근자
- 나머지 (%)
- 나머지 할당 (%=)
- 오른쪽 시프트 (>>)
- Right shift assignment (>>=)
- 전개 구문
- 일치 연산자 (===)
- 불일치 연산자 (!==)
- 빼기 (-)
- 빼기 할당 (-=)
- super
- this
- typeof
- 단항 부정 (-)
- 단항 더하기 (+)
- Unsigned right shift (>>>)
- Unsigned 오른쪽 시프트 할당 연산자 (>>>=)
- void
- yield
- yield*
정규 표현식
- Backreference: \1, \2
- Capturing group: (...)
- Character class escape: \d, \D, \w, \W, \s, \S
- Character class: [...], [^...]
- Character escape: \n, \u{...}
- Disjunction: |
- Input boundary assertion: ^, $
- Literal character: a, b
- Lookahead assertion: (?=...), (?!...)
- Lookbehind assertion: (?<=...), (?<!...)
- Modifier: (?ims-ims:...)
- Named backreference: \k<name>
- Named capturing group: (?<name>...)
- Non-capturing group: (?:...)
- Quantifier: *, +, ?, {n}, {n,}, {n,m}
- Unicode character class escape: \p{...}, \P{...}
- Wildcard: .
- Word boundary assertion: \b, \B
오류
- AggregateError: No Promise in Promise.any was resolved
- Error: Permission denied to access property "x"
- InternalError: too much recursion
- RangeError: argument is not a valid code point
- RangeError: BigInt division by zero
- RangeError: BigInt negative exponent
- RangeError: form must be one of 'NFC', 'NFD', 'NFKC', or 'NFKD'
- RangeError: invalid array length
- RangeError: invalid date
- RangeError: precision is out of range
- RangeError: radix must be an integer
- RangeError: repeat count must be less than infinity
- RangeError: repeat count must be non-negative
- RangeError: x can't be converted to BigInt because it isn't an integer
- ReferenceError: "x" is not defined
- ReferenceError: assignment to undeclared variable "x"
- ReferenceError: can't access lexical declaration`X' before initialization
- ReferenceError: must call super constructor before using 'this' in derived class constructor
- ReferenceError: super() called twice in derived class constructor
- SyntaxError: 'arguments'/'eval' can't be defined or assigned to in strict mode code
- SyntaxError: "0"-prefixed octal literals and octal escape seq. are deprecated
- SyntaxError: "use strict" not allowed in function with non-simple parameters
- SyntaxError: "x" is a reserved identifier
- SyntaxError: \ at end of pattern
- SyntaxError: a declaration in the head of a for-of loop can't have an initializer
- SyntaxError: applying the 'delete' operator to an unqualified name is deprecated
- SyntaxError: arguments is not valid in fields
- SyntaxError: await is only valid in async functions, async generators and modules
- SyntaxError: await/yield expression can't be used in parameter
- SyntaxError: cannot use `??` unparenthesized within `||` and `&&` expressions
- SyntaxError: character class escape cannot be used in class range in regular expression
- SyntaxError: continue must be inside loop
- SyntaxError: duplicate capture group name in regular expression
- SyntaxError: duplicate formal argument x
- SyntaxError: for-in loop head declarations may not have initializers
- SyntaxError: function statement requires a name
- SyntaxError: functions cannot be labelled
- SyntaxError: getter and setter for private name #x should either be both static or non-static
- SyntaxError: getter functions must have no arguments
- SyntaxError: identifier starts immediately after numeric literal
- SyntaxError: illegal character
- SyntaxError: import declarations may only appear at top level of a module
- SyntaxError: incomplete quantifier in regular expression
- ReferenceError: invalid assignment left-hand side
- SyntaxError: invalid BigInt syntax
- SyntaxError: invalid capture group name in regular expression
- SyntaxError: invalid character in class in regular expression
- SyntaxError: invalid class set operation in regular expression
- SyntaxError: invalid decimal escape in regular expression
- SyntaxError: invalid identity escape in regular expression
- SyntaxError: invalid named capture reference in regular expression
- SyntaxError: invalid property name in regular expression
- SyntaxError: invalid range in character class
- SyntaxError: invalid regexp group
- SyntaxError: invalid regular expression flag "x"
- SyntaxError: invalid unicode escape in regular expression
- SyntaxError: JSON.parse: bad parsing
- SyntaxError: label not found
- SyntaxError: missing : after property id
- SyntaxError: missing ) after argument list
- SyntaxError: missing ) after condition
- SyntaxError: missing ] after element list
- SyntaxError: missing } after function body
- SyntaxError: missing } after property list
- SyntaxError: missing = in const declaration
- SyntaxError: Malformed formal parameter
- SyntaxError: missing name after . operator
- SyntaxError: missing variable name
- SyntaxError: negated character class with strings in regular expression
- SyntaxError: new keyword cannot be used with an optional chain
- SyntaxError: nothing to repeat
- SyntaxError: numbers out of order in {} quantifier.
- SyntaxError: octal escape sequences can't be used in untagged template literals or in strict mode code
- SyntaxError: parameter after rest parameter
- SyntaxError: private fields can't be deleted
- SyntaxError: property name __proto__ appears more than once in object literal
- SyntaxError: raw bracket is not allowed in regular expression with unicode flag
- SyntaxError: redeclaration of formal parameter "x"
- SyntaxError: reference to undeclared private field or method #x
- SyntaxError: rest parameter may not have a default
- SyntaxError: return not in function
- SyntaxError: setter functions must have one argument
- SyntaxError: string literal contains an unescaped line break
- SyntaxError: super() is only valid in derived class constructors
- SyntaxError: tagged template cannot be used with optional chain
- SyntaxError: Unexpected '#' used outside of class body
- SyntaxError: Unexpected token
- SyntaxError: unlabeled break must be inside loop or switch
- SyntaxError: unparenthesized unary expression can't appear on the left-hand side of '**'
- SyntaxError: use of super property/member accesses only valid within methods or eval code within methods
- SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //# instead
- ReferenceError: deprecated caller or arguments usage
- TypeError: 'x' is not iterable
- TypeError: "x" is (not) "y"
- TypeError: "x" is not a constructor
- TypeError: "x" is not a function
- TypeError: "x" is not a non-null object
- TypeError: "x" is read-only
- TypeError: already executing generator
- TypeError: BigInt value can't be serialized in JSON
- TypeError: calling a builtin X constructor without new is forbidden
- TypeError: can't access/set private field or method: object is not the right class
- TypeError: can't assign to property "x" on "y": not an object
- TypeError: can't convert BigInt to number
- TypeError: can't convert x to BigInt
- TypeError: can't define property "x": "obj" is not extensible
- TypeError: can't delete non-configurable array element
- TypeError: can't redefine non-configurable property "x"
- TypeError: can't set prototype of this object
- TypeError: can't set prototype: it would cause a prototype chain cycle
- TypeError: cannot use 'in' operator to search for 'x' in 'y'
- TypeError: class constructors must be invoked with 'new'
- TypeError: cyclic object value
- TypeError: derived class constructor returned invalid value x
- TypeError: getting private setter-only property
- TypeError: Initializing an object twice is an error with private fields/methods
- TypeError: invalid 'instanceof' operand 'x'
- TypeError: invalid Array.prototype.sort argument
- TypeError: invalid assignment to const "x"
- TypeError: Iterator/AsyncIterator constructor can't be used directly
- TypeError: matchAll/replaceAll must be called with a global RegExp
- TypeError: More arguments needed
- TypeError: "x" has no properties
- TypeError: property "x" is non-configurable and can't be deleted
- TypeError: Reduce of empty array with no initial value
- TypeError: setting getter-only property "x"
- TypeError: WeakSet key/WeakMap value 'x' must be an object or an unregistered symbol
- TypeError: X.prototype.y called on incompatible type
- URIError: malformed URI sequence
- Warning: -file- is being assigned a //# sourceMappingURL, but already has one
- Warning: unreachable code after return statement