이 글은 JavaScript의 연산자와 표현식을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
1. 단항 연산자
1.delete 연산자
delete 연산자는 객체의 속성을 삭제하는 데 사용됩니다. 이 속성에 대한 참조가 없으면 결국 해제됩니다.
구문: 삭제 표현식
연산자는 객체에서 지정된 속성을 제거합니다. 성공적으로 삭제되면 true를 반환하고 그렇지 않으면 false를 반환합니다.
typeof 연산자는 계산되지 않은 피연산자의 유형을 나타내는 문자열을 반환합니다.
구문: typeof 피연산자; typeof(피연산자)
let Employee = { age: 28, name: 'abc', designation: 'developer' }; console.log(delete Employee.name); // returns true console.log(delete Employee.age); // returns true console.log(Employee); //{designation: "developer"}
3.void 연산자
void 연산자는 주어진 표현식을 평가하고 정의되지 않은 것을 반환합니다.
구문: void 표현식
typeof NaN === 'number'; typeof Number(1) === 'number'; typeof "" === 'string'; typeof true === 'boolean'; typeof Symbol('foo') === 'symbol'; typeof undefined === 'undefined'; typeof null === 'object' typeof [1, 2, 4] === 'object'; typeof new Boolean(true) === 'object'; typeof new Number(1) === 'object'; typeof new String("abc") === 'object'; typeof function(){} === 'function';
2. 관계형 연산자
1.in 연산자
if 지정된 속성이 지정된 개체 또는 해당 프로토타입 체인에 있는 경우 in 연산자는 반환합니다. true
구문: prop in object
<a> 这个链接点击之后不会做任何事情,如果去掉 void(), 点击之后整个页面会被替换成一个字符 0。 </a> <p> chrome中即使<a>也没变化,firefox中会变成一个字符串0 </a></p> <a> 点击这个链接会让页面背景变成绿色。 </a>
2.instanceof 연산자
instanceof 연산자는 객체가 프로토타입 체인에 있는지 테스트하는 데 사용됩니다. 생성자의 프로토타입 속성이 있습니다
구문: object instanceof constructor
let trees = new Array("redwood", "bay", "cedar", "oak", "maple"); console.log(0 in trees); // 返回true console.log(3 in trees); // 返回true console.log(6 in trees); // 返回false console.log("bay" in trees); // 返回false (必须使用索引号,而不是数组元素的值) console.log("length" in trees); // 返回true (length是一个数组属性)
3. Expression
1.this
함수 내부에서 this의 값은 함수가 호출되는 방식에 따라 달라집니다. 엄격 모드에서 this는 실행 컨텍스트에 들어갈 때 해당 값을 유지하므로 다음의 this는 기본적으로 정의되지 않은
let simpleStr = "This is a simple string"; let myString = new String(); let newStr = new String("String created with constructor"); let myDate = new Date(); let myObj = {}; simpleStr instanceof String; // 返回 false, 检查原型链会找到 undefined myString instanceof String; // 返回 true newStr instanceof String; // 返回 true myString instanceof Object; // 返回 true myDate instanceof Date; // 返回 true myObj instanceof Object; // 返回 true, 尽管原型没有定义
로 설정됩니다. 함수가 본문에 this 키워드를 사용하면 함수를 사용하여 Function.prototype에서 상속될 수 있습니다. 호출 또는 적용 메소드는 this 값을 호출의 특정 객체에 바인딩합니다.
function f2(){ "use strict"; // 这里是严格模式 return this; } f2() === undefined; // true
f.bind(someObject)를 호출하면 f와 동일한 함수 본문과 범위를 가진 함수가 생성되지만 이 새 함수에서는 this가 영구적으로 바인딩됩니다. 함수 호출 방식에 관계없이 바인드의 첫 번째 인수에
function add(c, d) { return this.a + this.b + c + d; } let o = {a: 1, b: 3}; // 第一个参数是作为‘this’使用的对象 // 后续参数作为参数传递给函数调用 add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16
화살표 함수에서 이는 둘러싸는 어휘 컨텍스트의 this와 일치합니다. 전역 코드에서는 전역 객체
function f(){ return this.a; } let g = f.bind({a:"azerty"}); console.log(g()); // azerty let h = g.bind({a:'yoo'}); // bind只生效一次! console.log(h()); // azerty
2.super
로 설정됩니다. 구문:
super([arguments]) // 상위 객체/상위 클래스의 생성자를 호출합니다.super.functionOnParent([arguments ]) ; // 상위 객체/상위 클래스에서 메서드를 호출합니다.
생성자에서 사용하면 super 키워드가 단독으로 나타나므로 this 키워드를 사용하기 전에 사용해야 합니다. super 키워드는 상위 개체의 함수를 호출하는 데에도 사용할 수 있습니다
let globalObject = this; let foo = (() => this); console.log(foo() === globalObject); // true
3.new
new 연산자는 사용자 정의 개체 유형의 인스턴스 또는 생성자를 사용하여 내장 개체의 인스턴스를 생성합니다
class Human { constructor() {} static ping() { return 'ping'; } } class Computer extends Human { constructor() {} static pingpong() { return super.ping() + ' pong'; } } Computer.pingpong(); // 'ping pong'
4. 구문 확장
함수 호출/배열 구성 중에 구문 수준에서 배열 표현식이나 문자열을 확장할 수 있습니다. 리터럴 객체를 구성할 때 키-값 용어로 객체 표현식을 확장할 수도 있습니다.
함수 호출 중에 확장 사용 구문 function Car() {}
car1 = new Car()
console.log(car1.color) // undefined
Car.prototype.color = null
console.log(car1.color) // null
car1.color = "black"
console.log(car1.color) // black
function myFunction(x, y, z) { }
let args = [0, 1, 2];
myFunction.apply(null, args);
//展开语法
function myFunction(x, y, z) { }
let args = [0, 1, 2];
myFunction(...args);
let parts = ['shoulders','knees'];
let lyrics = ['head',... parts,'and','toes'];
// ["head", "shoulders", "knees", "and", "toes"]
let arr = [1, 2, 3];
let arr2 = [...arr]; // like arr.slice()
arr2.push(4);
// arr2 此时变成 [1, 2, 3, 4]
// arr 不受影响
5. 클래스 표현식
클래스 표현식은 클래스 A 구문을 정의하는 데 사용됩니다
let arr1 = [0, 1, 2]; let arr2 = [3, 4, 5]; // 将 arr2 中所有元素附加到 arr1 后面并返回 let arr3 = arr1.concat(arr2); //使用展开语法 let arr1 = [0, 1, 2]; let arr2 = [3, 4, 5]; let arr3 = [...arr1, ...arr2];
6. 함수 표현식
함수 키워드를 사용하여 표현식에서 함수를 정의할 수 있습니다. 함수 생성자와 함수 선언을 사용하여 함수를 정의할 수도 있습니다.
함수 선언 호이스팅 및 함수 표현식 호이스팅
: JavaScript의 함수 표현식은 그렇지 않습니다. 호이스트된 함수 선언과 달리 정의하기 전에는 함수 표현식을 사용할 수 없습니다let Foo = class {
constructor() {}
bar() {
return "Hello World!";
}
};
let instance = new Foo();
instance.bar();
// "Hello World!"
7. function* 표현식
function
키워드는 표현식 내부에 있을 수 있습니다. 생성기 함수 function이 선언 방법(별표가 뒤에 오는 함수 키워드)은 생성기 객체를 반환하는 생성기 함수(생성기 함수) 정의구문: function* name([param[, param [, ... param]]]) { 명령문 }
/* 函数声明 */ foo(); // "bar" function foo() { console.log("bar"); } /* 函数表达式 */ baz(); // TypeError: baz is not a function let baz = function() { console.log("bar2"); };Receive 매개변수
function* idMaker(){
let index = 0;
while(index
function* idMaker(){
let index = arguments[0] || 0;
while(true)
yield index++;
}
let gen = idMaker(5);
console.log(gen.next().value); // 5
console.log(gen.next().value); // 6
function *createIterator() {
let first = yield 1;
let second = yield first + 2; // 4 + 2
// first =4 是next(4)将参数赋给上一条的
yield second + 3; // 5 + 3
}
let iterator = createIterator();
console.log(iterator.next()); // "{ value: 1, done: false }"
console.log(iterator.next(4)); // "{ value: 6, done: false }"
console.log(iterator.next(5)); // "{ value: 8, done: false }"
console.log(iterator.next()); // "{ value: undefined, done: true }"
관련 권장 사항:
위 내용은 JavaScript의 연산자 및 표현식 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

C 및 JavaScript는 WebAssembly를 통한 상호 운용성을 달성합니다. 1) C 코드는 WebAssembly 모듈로 컴파일되어 컴퓨팅 전력을 향상시키기 위해 JavaScript 환경에 도입됩니다. 2) 게임 개발에서 C는 물리 엔진 및 그래픽 렌더링을 처리하며 JavaScript는 게임 로직 및 사용자 인터페이스를 담당합니다.

JavaScript는 웹 사이트, 모바일 응용 프로그램, 데스크탑 응용 프로그램 및 서버 측 프로그래밍에서 널리 사용됩니다. 1) 웹 사이트 개발에서 JavaScript는 HTML 및 CSS와 함께 DOM을 운영하여 동적 효과를 달성하고 jQuery 및 React와 같은 프레임 워크를 지원합니다. 2) 반응 및 이온 성을 통해 JavaScript는 크로스 플랫폼 모바일 애플리케이션을 개발하는 데 사용됩니다. 3) 전자 프레임 워크를 사용하면 JavaScript가 데스크탑 애플리케이션을 구축 할 수 있습니다. 4) node.js는 JavaScript가 서버 측에서 실행되도록하고 동시 요청이 높은 높은 요청을 지원합니다.

Python은 데이터 과학 및 자동화에 더 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 더 적합합니다. 1. Python은 데이터 처리 및 모델링을 위해 Numpy 및 Pandas와 같은 라이브러리를 사용하여 데이터 과학 및 기계 학습에서 잘 수행됩니다. 2. 파이썬은 간결하고 자동화 및 스크립팅이 효율적입니다. 3. JavaScript는 프론트 엔드 개발에 없어서는 안될 것이며 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축하는 데 사용됩니다. 4. JavaScript는 Node.js를 통해 백엔드 개발에 역할을하며 전체 스택 개발을 지원합니다.

C와 C는 주로 통역사와 JIT 컴파일러를 구현하는 데 사용되는 JavaScript 엔진에서 중요한 역할을합니다. 1) C는 JavaScript 소스 코드를 구문 분석하고 추상 구문 트리를 생성하는 데 사용됩니다. 2) C는 바이트 코드 생성 및 실행을 담당합니다. 3) C는 JIT 컴파일러를 구현하고 런타임에 핫스팟 코드를 최적화하고 컴파일하며 JavaScript의 실행 효율을 크게 향상시킵니다.

실제 세계에서 JavaScript의 응용 프로그램에는 프론트 엔드 및 백엔드 개발이 포함됩니다. 1) DOM 운영 및 이벤트 처리와 관련된 TODO 목록 응용 프로그램을 구축하여 프론트 엔드 애플리케이션을 표시합니다. 2) Node.js를 통해 RESTFULAPI를 구축하고 Express를 통해 백엔드 응용 프로그램을 시연하십시오.

웹 개발에서 JavaScript의 주요 용도에는 클라이언트 상호 작용, 양식 검증 및 비동기 통신이 포함됩니다. 1) DOM 운영을 통한 동적 컨텐츠 업데이트 및 사용자 상호 작용; 2) 사용자가 사용자 경험을 향상시키기 위해 데이터를 제출하기 전에 클라이언트 확인이 수행됩니다. 3) 서버와의 진실한 통신은 Ajax 기술을 통해 달성됩니다.

보다 효율적인 코드를 작성하고 성능 병목 현상 및 최적화 전략을 이해하는 데 도움이되기 때문에 JavaScript 엔진이 내부적으로 작동하는 방식을 이해하는 것은 개발자에게 중요합니다. 1) 엔진의 워크 플로에는 구문 분석, 컴파일 및 실행; 2) 실행 프로세스 중에 엔진은 인라인 캐시 및 숨겨진 클래스와 같은 동적 최적화를 수행합니다. 3) 모범 사례에는 글로벌 변수를 피하고 루프 최적화, Const 및 Lets 사용 및 과도한 폐쇄 사용을 피하는 것이 포함됩니다.

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구
