js 练习

typeof 判断类型

// 不符合预期的值,typeof判断null类型和函数的类型
typeof alert // "function"
typeof null // "object"
typeof qaz // "undefined"

变量声明提升

// a 值会是多少?
console.log(a);
var a = 2;

// a值会是undefined,为什么?
// 因为变量声明提升了,上面的式子等同于如下:
var a; //只声明不赋值,变量默认值为undefined
console.log(a);
a = 2;
// console.log 结果是?
if(!('username' in window)){
    var username = 'haha';
}
console.log(username); 
/* undefined!!!为什么呢?js解释之前会对进行一次“预编译”,把所有var变量创建,默认值为undefined,等到执行条件判断的时候,由于 username 变量已定义,所以条件判断里的代码不会执行,console.log 结果,即 username 的默认值,undefined。*/
// console.log 结果是?
if('username' in window){
    var username = 'haha';
}
console.log(username);
/* haha 如上例可知*/

toString() 检测对象类型

// toString() 返回 "[object type]",其中type是对象的类型。
new Object().toString() // [object,Object]
toString.call(1) // [object, Number]
toString.call('1') // [object, String]
toString.call(null) // [object, Null]
toString.call(undefined) // [object, Undefined]
toString.call(Math) // [object, Math]
toString.call(Math.abs); // [object, Function]
toString.call(new Date); // [object, Date]

label:statement

用 label 和 statement 来实现 “goto”功能,
label 可以是非保留关键字的 JavaScript 标识符
statement 为 break 或 continue

// continue 例子
loop1:
for(var i = 0; i < 3; i++){
    var tmp = '';
    loop2:
    for(var j = 0; j < 3; j++){
        tmp += j + ' ';
        if(i === 0 && j === 0){
            console.log(tmp);
            continue loop1;
        }
        if(i === 1 && j === 1){
            console.log(tmp);
            continue loop1;
        }
        if(i === 2 && j === 2){
            console.log(tmp);
            continue loop1;
        }
    }
}

// break 例子
var i = 0, j = 0;
loop1:
for(i = 0; i < 10; i++){
    loop2:
    for(j = 0; j< 10; j++){
        if (j === 10) break loop1;
    }
    console.log(i + ' ' + j);
}

对象的交换

// 定义2个对象
var a0 = {a:1, b:1};
var a1 = {a:2, b:2};
// 定义t指向了a0
var t = a0;

a0 = a1; //更改了a0的指向到a1,t指向不变
a1 = a0; //更改了a1的指向到t
// 于是乎,a0 = {a: 2, b: 2},a1 = {a: 1, b: 1},t = {a: 1, b: 1}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值