// 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
*/
js基础的巩固
最新推荐文章于 2022-08-05 15:35:59 发布