JavaScript: 암시적 변환, 명시적 변환, 암시적 작업, 명시적 작업

1. js 암시적 변환 이해

JavaScript의 암시적 변환은 변환 함수를 명시적으로 호출하지 않고 실행 중에 자동으로 발생하는 데이터 유형 변환을 의미합니다. 즉, JavaScript는 서로 다른 유형의 값으로 작업할 때 자동으로 유형 변환을 수행합니다. 이 변환은 일반적으로 서로 다른 데이터 유형 간의 작업이나 비교를 수행할 때 발생합니다.

일련번호 분류
1 문자열과 숫자 사이의 변환
더하기(+) 연산자를 사용하여 문자열과 숫자를 연결할 때 JavaScript는 숫자를 문자열 유형으로 변환하여 문자열과 숫자를 연결합니다.
2 문자열을 숫자로 변환 빼기
(-) 연산자를 사용하면 JavaScript는 문자열을 숫자 유형으로 변환하여 작업합니다.
부울 값과 숫자 사이의 변환
부울 값과 숫자를 연산에 사용할 때 JavaScript는 부울 값을 숫자 유형으로, true를 1로, false를 0으로 변환합니다.
4 객체와 원시값 간의 변환
객체와 원시값을 연산에 사용할 때 JavaScript는 자동으로 객체를 원시값 유형으로 변환합니다.예를 들어 객체를 문자열로 변환하면 객체의 toString() 메서드는 다음과 같습니다. 라고 불리는.
5 불리언 값으로 암묵적으로 변환
판정 조건에 불리언 값이 아닌 값이 사용된 경우, 자바스크립트는 숫자 0, 빈 문자열, null, 정의되지 않음, NaN 등을 false로 변환하여 불리언 값으로 변환하고, 이를 불리언 값으로 변환합니다. 다른 값을 true로 설정합니다. .
일련번호 유형
1 문자열 및 숫자 추가(문자열로의 암시적 변환) "1" + 2 // "12"
2 문자열 및 부울 추가(문자열로의 암시적 변환) "참" + 참 // "참참"
숫자 및 부울 값 추가(암묵적으로 숫자로 변환) 1 + 참 // 2
4 배열 및 문자열 추가(문자열로 암시적 변환) [1, 2, 3] + "안녕하세요" // "1,2,3안녕하세요"
5 숫자와 문자열의 비교(숫자로의 암시적 변환) "1" > 2 // 거짓
"1" < 2 // 참
6 부울 값과 숫자의 곱셈(암시적 숫자로 변환)
부울 값과 숫자의 추가(암시적 숫자로 변환)
참 * 2 // 2
참 + 1 // 2
7 객체와 부울 값의 비교(부울 값으로의 암시적 변환) if ({}) {   // 여기에 있는 코드가 실행됩니다 }

8 부울로의 조건부 변환(부울로의 암시적 변환)인 숫자 유형 var num = 0;
if (num) {   console.log("num is true"); // 이 시점까지는 실행되지 않습니다 }

9 undefine과 null의 변환
undefine을 숫자형으로 변환하면 결과는 NaN이 된다.
null을 숫자형으로 변환하면 결과는 0이 된다
. undefine과 null을 Boolean형으로 변환하면 결과는 false이다.
Number(정의되지 않음) // NaN
Number(null) // 0
Boolean(정의되지 않음) // false
Boolean(null) // false
10 문자열과 숫자 더하기, 빼기, 곱하기, 나누기 "10" + 1 // "101"
"10" - 1 // 9
"10" * 2 // 20
"10" / 2 // 5
"10" / "two" // NaN
11 객체가 덧셈 연산에 참여하면 객체의 valueOf()메서드나 toString()메서드가 자동으로 호출되어 객체를 문자열이나 숫자로 변환합니다.

1. 객체에 valueOf()메소드가 있는 경우 JavaScript는 해당 메소드를 먼저 호출합니다. valueOf()이 메서드는 객체의 원래 값(일반적으로 숫자 또는 부울 값)을 반환합니다.

valueOf()2. 객체 에 메소드가 없거나 valueOf()메소드가 기본이 아닌 값을 반환하는 경우 JavaScript는 객체의 toString()메소드를 호출하려고 시도합니다. toString()이 메서드는 개체를 나타내는 문자열을 반환합니다.

valueOf()3. 객체에 메소드와 메소드가 없거나 toString()두 메소드 모두 기본이 아닌 값을 반환하는 경우 JavaScript는 유형 오류(TypeError)를 발생시킵니다.

let obj = {
  valueOf: function() { return 42; },
  toString: function() { return "42"; }
}

console.log(obj + 1); // 43

let obj2 = {
  toString: function() { return "2"; }
}

console.log(obj2 * 3); // 6

let obj3 = {}

console.log(obj3 + "hello"); // [object Object]hello

JavaScript의 암시적 변환은 때때로 예상치 못한, 의도하지 않은 결과를 초래할 수 있으며, 특히 개발자가 암시적 변환 규칙에 익숙하지 않은 경우 더욱 그렇습니다. 따라서 JavaScript 코드를 작성할 때 암시적 변환을 완전히 이해하고 고려해야 합니다. 동시에 비교에 "=="나 "!="를 사용하는 등 유형 변환으로 인해 발생하는 불필요한 문제를 피하기 위해 암시적 변환이 수행됩니다. 엄격한 항등("===" 또는 " " !==") 비교 연산자입니다. 코드를 작성할 때 암시적 변환을 피하고 명시적으로 유형 변환을 수행하십시오.

2. js 명시적 변환 이해

在 JavaScript 中,显式转换是指通过代码的明确操作将一个数据类型转换为另一个数据类型。

序号 方法 解释
1 parseInt() 将字符串转换为数字
parseInt() 函数用于将整数字符串转换为整数
parseFloat() 函数用于将浮点数字符串转换为浮点数
如果无法转换,则返回 NaN。
2 parseFloat()
3 Number() 将字符串、布尔值、undefined 和 null 转换为数字
4 String() 将数值、布尔值、对象、数组、null 和 undefined 转换为字符串
5 Boolean()函数 将任何类型的值转换为布尔值。其中,只有 null、undefined、false、空字符串和数字 0 被转换为 false,其他所有值都被转换为 true
6 操作符(+、-、*、/) 将数值字符串和布尔值转换为数字
7 Object()函数 将基本类型的数据转换为对应的对象类型。

显式转换在编程时非常常见,可以使程序更加明确和可读。但是要注意,如果显式转换不当,也可能会在程序运行时产生错误。因此,在进行显式转换时,要仔细考虑转换的类型和转换的方式,以避免潜在的错误。

三、理解js隐式操作

在 JavaScript 中,有很多隐式操作,这些操作是指在执行时自动发生,而不需要显示的操作(即不需要明确调用的操作)。

序号 方法 解释
1 隐式类型转换 在进行运算或比较时,JavaScript 会自动将不同类型的值转换成同一类型进行操作。例如,字符串和数字进行运算时,JavaScript 会将字符串转换成数字。
2 隐式原型链 当使用对象的属性时,如果该属性不在该对象的属性列表中,JavaScript 会沿着原型链向上查找该属性。这是一个自动发生的过程,称为隐式原型链。
3 隐式闭包 当一个函数内部引用了外部的变量时,JavaScript 会自动创建一个闭包。这个闭包会将被引用的变量保存在内存中,直到该闭包被销毁。
4 隐式对象创建 当使用对象字面量或 new 关键字创建对象时,JavaScript 会自动为该对象创建一个原型对象。
5 隐式函数调用 当使用函数调用时,如果函数的调用方式不是以对象方法的形式调用,那么调用的函数会成为全局对象的一个方法,此时 this 指向全局对象。
6 变量提升 在JavaScript中,变量和函数的声明会在代码执行前进行“提升”,即将声明提前执行,使得在声明之前就可以使用这些变量或函数。
7 this关键字 this关键字在不同的上下文中会有不同的值,例如在函数内部指向函数的执行上下文,而在对象方法中指向该对象。
8 隐式迭代 JS中的数组和对象都可以进行迭代操作,例如使用for-in和for-of循环来遍历对象和数组。
9 隐式全局变量 如果在函数中没有使用var或let关键字,则会隐式创建一个全局变量。
10 隐式递归 某些函数会在函数内部调用自身来实现递归操作,这种递归操作是隐式的。

四、理解js显式操作

在 JavaScript 中,显式操作是指通过代码的明确操作来实现某种操作或实现某种行为。

序号 方法 解释
1 赋值操作符(=) 将一个值赋给一个变量。
2 数学操作符(+、-、*、/、%) 用于数学计算,例如将两个数字相加或相乘等。
3 比较操作符(>、<、>=、<=、==、!=) 用于比较两个值的大小或相等性。
4 逻辑操作符(&&、||、!) 用于逻辑计算,例如判断两个条件是否同时成立、或者取反一个值等。
5 条件操作符(?:) 用于根据条件返回不同的值。
6 函数调用 使用函数名称和参数列表来调用一个函数。

通过显式操作,我们可以方便地控制程序运行的过程,实现我们想要的功能。同时,显式操作也常常被用来进行数据类型转换、类型检查等操作,进一步增强程序的健壮性和可维护性。

五、欢迎交流指正。

参考链接

JavaScript中的隐形转换

JS的隐式转换与显式转换_js隐式转换和显式转换_厉飞雨123的博客-CSDN博客

一文带你了解JavaScript的隐式类型转换_javascript隐式转换_ajaxsync的博客-CSDN博客

추천

출처blog.csdn.net/snowball_li/article/details/132691313