We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
即 **,与 Math.pow() 类似
**
a ** b ** c
a ** (b ** c)
即 * / %
* / %
定义 left 为 乘法表达式 运算结果
定义 leftValue 为 ? GetValue(left)
定义 right 为 求幂表达式 运算结果
定义 rightValue 为 ? GetValue(right)
定义 lnum 为 ? ToNumeric(leftValue)
定义 rnum 为 ? ToNumeric(rightValue)
如果 lnum 类型与 rnum 类型不同,抛 TypeError 错误
定义 T 为 lnum 的类型
如果运算符是 *,返回 T::multiply(lnum, rnum)。(PS:可能是 BigInt 类型的 ::multiply)
*
如果运算符是 /,返回 T::divide(lnum, rnum)。(PS:可能是 BigInt 类型的 ::divide)
/
否则,
a. 断言:运算符是 %
%
b. 返回 T::remainder(lnum, rnum)。(PS:可能是 BigInt 类型的 ::remainder)
注意:+ 运算符既能执行字符串拼接,也能用作数值相加。
定义 lref 为 加法表达式 运算结果
定义 lval 为 ? GetValue(lref)
定义 rref 为 乘法表达式 的运算结果
定义 rval 为 ? GetValue(rref)
定义 lprim 为 ? ToPrimitive(lval)
定义 rprim 为 ? ToPrimitive(rval)
如果 lprim 是 String 类型或者 rprim 是 String 类型
a. 定义 lstr 为 ? ToString(lprim)
b. 定义 rstr 为 ? ToString(rprim)
c. 返回 lstr 和 rstr 的 字符串拼接
定义 lnum 为 ? ToNumeric(lprim)
定义 rnum 为 ? ToNumeric(rprim)
如果 lnum 的类型和 rnum 的类型不同,抛 TypeError 异常
返回 T::add(lnum, rnum)。 (PS:还有 BigInt 类型的 ::add)
我不会。。。 想了半小时愣是想不出来,只能看答案了,看到这个:Advanced-Frontend/Daily-Interview-Question#161 (comment) 回答,真的天才啊!!!
我能想到的就是 左移3位得到8倍,但是7倍的话我不得不用减法了,可是题目不允许。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
求幂运算,乘法运算符,加法运算符以及减法运算符
求幂运算符
a ** b ** c
等同于a ** (b ** c)
。乘法运算符
定义 left 为 乘法表达式 运算结果
定义 leftValue 为 ? GetValue(left)
定义 right 为 求幂表达式 运算结果
定义 rightValue 为 ? GetValue(right)
定义 lnum 为 ? ToNumeric(leftValue)
定义 rnum 为 ? ToNumeric(rightValue)
如果 lnum 类型与 rnum 类型不同,抛 TypeError 错误
定义 T 为 lnum 的类型
如果运算符是
*
,返回 T::multiply(lnum, rnum)。(PS:可能是 BigInt 类型的 ::multiply)如果运算符是
/
,返回 T::divide(lnum, rnum)。(PS:可能是 BigInt 类型的 ::divide)否则,
a. 断言:运算符是
%
b. 返回 T::remainder(lnum, rnum)。(PS:可能是 BigInt 类型的 ::remainder)
加法运算符
定义 lref 为 加法表达式 运算结果
定义 lval 为 ? GetValue(lref)
定义 rref 为 乘法表达式 的运算结果
定义 rval 为 ? GetValue(rref)
定义 lprim 为 ? ToPrimitive(lval)
定义 rprim 为 ? ToPrimitive(rval)
如果 lprim 是 String 类型或者 rprim 是 String 类型
a. 定义 lstr 为 ? ToString(lprim)
b. 定义 rstr 为 ? ToString(rprim)
c. 返回 lstr 和 rstr 的 字符串拼接
定义 lnum 为 ? ToNumeric(lprim)
定义 rnum 为 ? ToNumeric(rprim)
如果 lnum 的类型和 rnum 的类型不同,抛 TypeError 异常
定义 T 为 lnum 的类型
返回 T::add(lnum, rnum)。 (PS:还有 BigInt 类型的 ::add)
减法运算符
2020-08-05 补充
Daily-Interview-Question 第 102 题:不用加减乘除运算符,求整数的7倍
我不会。。。
想了半小时愣是想不出来,只能看答案了,看到这个:Advanced-Frontend/Daily-Interview-Question#161 (comment) 回答,真的天才啊!!!
我能想到的就是 左移3位得到8倍,但是7倍的话我不得不用减法了,可是题目不允许。
The text was updated successfully, but these errors were encountered: