console.log(typeof true === 'boolean'); // true
console.log(typeof NaN === 'number'); // true
console.log(typeof undefined === 'undefined'); // true
console.log(typeof null === 'null'); // false
console.log(NaN === NaN); // false
console.log(null == undefined); // true
console.log(null === undefined); // false
// 任何与NaN进行运算的结果均会为NaN,NaN与自身不相等(NaN不与任何值相等)
console.log(NaN == NaN); // false
var a =1;
function test(b){
b=2;
b++;
a++;
}
test(a);
console.log(a); // 2
function foo(num){
console.log(num);
num++;
var num =1;
console.log(num);
}
foo(1); // 1 1
var a = "1" + 1;
var b = "11" > 2;
var c = "11" > "2";
console.log(a); // '11'
console.log(b); // true
console.log(c); // false
原始类型的非相等比较:先转换为数值再比较,对于对象要先执行valueOf后执行toString;
var x = [2];
x > '11' // true
// 等同于 [2].valueOf().toString() > '11'
// 即 '2' > '11'
// 两个字符串先比较第一个码点'2'>'1'
x.valueOf = function () { return '1' };
x > '11' // false
// 等同于 [2].valueOf() > '11'
// 即 '1' > '11'
for (i = 0, j = 0; i < 10, j < 6; i++, j++) {
k = i + j;
}
console.log(k); // 10
var a = 0 && false || 1 && 2;
console.log(a); // 2
console.log(1>2>3,3>2>1); // false false
console.log((function(){}) instanceof Object,typeof null); // true "object"
function foo(a, b) {
arguments[0] = 2;
arguments[1] = 0;
console.log(a, b);
}
foo(1); // 2 undefined
// 跳台阶问题,一次只能跳1个、2个或 3个台阶
function jieti(n) {
if (n == 1) {
//jieti(1)=1
return 1;
}
else if(n == 2) {
//jieti(2)=2
return 2;
}
else if(n == 3) {
//jieti(3)=4
return 4;
}
return jieti(n - 1) + jieti(n - 2) + jieti(n - 3);
}
console.log(jieti(10)); // 274
const bar = {};
function foo(){
console.log(this===bar)
}
const bingo = foo.bind({});
foo(); // false
foo.apply(bar); // true
bingo(); // false
bingo.apply(bar); // false
// promise会立即执行的
setTimeout(function() {
console.log(4);
}, 0);
new Promise(function(resolve) {
console.log(1);
for (var i = 0; i < 10000; i++) {
i = 9999 && resolve();
}
console.log(2);
}).then(function() {
console.log(5)
});
console.log(3); // 1 2 3 4 5
// js浅拷贝
(function(e) {
var a = {
x: 1
}
var b = a;
b.y = '2a';
console.log(a.x + a.y + a.z);
})() // 12aundefined
参考链接:
JS的比较运算符,数值自动转换笔记
网友评论