前端概念复习和VUE初学
昨天进展到了JS的变量提升,接着昨天的进度开始
疑问:
1.严格模式下使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。(啥意思?)
function f(){
"use strict";
this.a = 1;
};
f();// 报错,this未定义
问题已经解决,文末给出解释。
任务一:JS语法复习
question1:变量提升
函数和变量声明总是被放到顶部,意味着可以先使用后声明
x = 5; // 变量 x 设置为 5
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x; // 在元素中显示 x
var x; // 声明 x
初始化不提升 ,下面代码的输出x 为:5,y 为:undefined
var x = 5; // 初始化 x
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y; // 显示 x 和 y
var y = 7; // 初始化 y
question2:严格模式
不允许使用未声明的变量:
不允许删除变量或对象。
不允许删除函数。
不允许变量重名
"use strict";
function x(p1, p1) {}; // 报错
不允许使用八进制:
"use strict";
var x = 010; // 报错
不允许使用转义字符:
"use strict";
var x = \010; // 报错
不允许对只读属性赋值:
"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // 报错
禁止this关键字指向全局对象。
function f(){
return !this;
}
// 返回false,因为"this"指向全局