js基础的巩固

// this指向问题 , this直接指向执行主体
var b1 = 1
console.log(this.b1)
var vals=1
var obj = {
    vals: 2,
    dbl: function () {
        // console.log(this)
        this.vals *= 2
        console.log(vals)
        console.log(this.vals)
    }
}
var ff = obj.dbl() // 直接执行函数,这儿执行主体为obj,因为这个函数在obj中,所以this就是obj
var fn = obj.dbl; fn() // 相当于先让fn = 这个函数,fn在全局下再执行, 这儿执行主体就是全局window环境,执行主体为window,所以this就是window

// 作用域和变量提升实例
            var tmp = new Date();
            function f() {
                console.log(tmp);
                if (false) {
                    var tmp = "hello world";
                }
            }
            f(); // 得到undefined,因为if(false)未执行,而var tmp = "hello world";中var tmp变量提升导致tmp被重新定义却未赋值,所有得到undefined,如果把if中的var改为let就会得到现在的时间
// 代码块
        // 代码块是在大括号 {} 中所写的语句,以此将 多条语句的集合视为一条语句来使用。
        // 例如:
        {
            var c = 123;
            c++;
            console.log(c);
            function sc() {
                console.log(11)
            }
            sc()
        }
// 标签
        label:
        {
            console.log(1)
            break label;
            console.log(2)
        }
        // 标签跳出代码块
        top:
        for (var i = 0; i < 3; i++){
            for (var j = 0; j < 3; j++){
                if (i === 1 && j === 1) break top; // break top跳出整个循环,break跳出当前内层循环,开始外层循环  coutinue top: 跳出当前内层循环开始外层循环,coutinue :跳出当前循环,执行下一个内层循环
                // if (i === 1 && j === 1) break; 也可用continue,不加top相当于只加break,加了只忽略i=1,j=1的结果 
                console.log('i=' + i + ', j=' + j);
            }
        }
        // for双重循环顺序: 第一层第一个,然后第一个匹配到第二层所有,然后在执行第一层第二个,匹配第二层所有。。。
        // 如上循环结果为: 先i = 0; j = 1,2,3;再i = 1; j=0;因为break top处跳出了所有循环,如果不加top则会得到:
        // i=0, j=0,1,2;i=1, j=0;i=2,j=0,1,2;再i=1,j=1时内层循环跳出,开始外层下次循环
// for
        var x = 4;
        for (var i = 0; i < x; i++) {
            console.log(i);
            if (i === 1)
            break; // 跳出整个循环
        }
        for (var i = 0; i < x; i++) {
            if (i === 1) continue; // 相当于跳过为1的循环,开始为2的循环
            console.log('i 当前为:' + i);
        }
        console.log('...................................')
// while
        var i = 0;
        while (i < 4){
            i++;
            if (i % 2 === 0) continue;
            console.log('i 当前为:' + i);
        }
// 三元运算符
        var ns = 4
        var even = (ns % 2 === 0) ? 12 : 32; // 如果ns能整除2,那么even就等于12,否则等于32
        console.log(even)
//  switch case
        var x = 1;
        switch (x) {
        case 1:  // 如果x === 1则输出下面打印
            console.log('x 等于1');
            break;
        case 2:  // 如果x === 2则输出下面打印
            console.log('x 等于2');
            break;
        default:  // 如果x !== 以上则输出下面打印
            console.log('x 等于其他值');
        }
// if(){}else{}简写
        var m = 3,n = 2
        if (m === 2)
        m = m + 1;
        console.log(m) // 3 ,如果改为if (m === 3),则输出m得到4

        if (m === 2)
        if (n === 2) console.log('...')
        else console.log('world') // 这儿的else只能是与它最近的if的相应于的判断语句
        /*等同于
        if (m === 2) {
            if (n === 2) {
                console.log('('...')');
            } else {
                console.log('world');
            }
        } 
        因为这儿的else只能是与它最近的if的相应于的判断语句
        */
// 中文变量
        var 临时变量 = 1;
        console.log(临时变量)
//变量提升 
        console.log(aS); // 得到undefined因为变量提升,所以var as 提升在前面
        var aS = 1;
        /*以上等于
        var aS
        console.log(aS)
        aS = 1
        */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值