前端概念复习+VUE初学
今天是实习第一天,未来的大概任务已经列在了纸上,个人对于自己的html/css/js基础还比较自信,但现在需要重新过一遍基础,记录一下无法立刻回忆起来的知识,并尽快转入vue的学习。
按照我个人的博客习惯,一些没有解决的问题我会keep在文章前页,如果我解决了,我会在文末放出解释,如果有路过的大佬看到,也希望有大佬能提出解答。
遇到的疑问:
1.不要创建 String 对象。它会拖慢执行速度,并可能产生其他副作用:
该问题已经解决,将在文末写出解决方案。
任务1:
HTML/CSS/JAVASCRIPT基础虽在,但今天要花时间过一遍所有的菜鸟教程上的基础。记录所有无法立刻回忆起来的知识
question1:对象方法?
var person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function()
{
return this.firstName + " " + this.lastName;
}
document.getElementById("demo1").innerHTML = "不加括号输出函数表达式:" + person.fullName;
document.getElementById("demo2").innerHTML = "加括号输出函数执行结果:" + person.fullName();
//不加括号输出函数表达式:function() { return this.firstName + " " + //this.lastName; }
//加括号输出函数执行结果:John Doe
question2:调用带参数的函数tip (这个问题太简单了,中午有点困没反应过来,下次阅读时可以略过)
可以使用不同的参数来调用该函数,这样就会给出不同的消息:
<button onclick="myFunction('Harry Potter','Wizard')">点击这里</button>
<button onclick="myFunction('Bob','Builder')">点击这里</button>
//typora(或者说markdown)太秀了吧,刚才我没有将其编辑为代码块,结果他整了个botton出来
<script>
function myFunction(name,job)
{
alert("Welcome " + name + ", the " + job);
}
</script>
//只要我调用函数用的参数不一样,消息就不同
question3:return
我想退出函数,可以直接return;
function myFunction(a,b)
{
if (a>b)
{
return;
}
x=a+b
}
question4:向未声明的 JavaScript 变量分配值
非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以删除。
var var1 = 1; // 不可配置全局属性
var2 = 2; // 没有使用 var 声明,可配置全局属性
console.log(this.var1); // 1
console.log(window.var1); // 1
delete var1; // false 无法删除
console.log(var1); //1
delete var2;
console.log(delete var2); // true
console.log(var2); // 已经删除 报错变量未定义
question5:JavaScript 字符串
var answer = "It's alright";
var answer = "He is called 'Johnny'";
var answer = 'He is called "Johnny"';
你可以在字符串中使用引号,字符串中的引号不要与字符串的引号相同
var x = 'It\'s alright';
var y = "He is called \"Johnny\"";
你也可以在字符串添加转义字符来使用引号
var x = "John";
var y = new String("John");
typeof x // 返回 String
typeof y // 返回 Object
不要创建 String 对象。它会拖慢执行速度,并可能产生其他副作用:
var x = "John";
var y = new String("John");
(x === y) // 结果为 false,因为 x 是字符串,y 是对象
=== 为绝对相等,即数据类型与值都必须相等。
question6:null和undefined
null和undefined值相等但是类型不等,意味着他们是“==”
但是不 “===”
你可以设置为 null 来清空对象:
var person = null; // 值为 null(空), 但类型为对象
你可以设置为 undefined 来清空对象:
var person = undefined; // 值为 undefined, 类型为 undefined
question7:正则表达式
search() 方法
var str = "Visit Runoob!";
var n = str.search(/Runoob/i);
//使用正则表达式,输出6
var str = "Visit Runoob!";
var n = str.search("Runoob");
//使用字符串,输出6
replace() 方法
<p id="demo">Visit Microsoft!</p>
var str = document.getElementById("demo").innerHTML;
var txt = str.replace(/microsoft/i,"Runoob");
var str = document.getElementById("demo").innerHTML;
var txt = str.replace("Microsoft","Runoob");
输出都是 Visit Runoob!
question8:调试
console.log(c);//控制台输出
任务2:
通读教程
question1:CommonJS是什么?
js没有模块功能,CommonJS应运而生,它希望js可以在任何地方运行,不只是浏览器中。CommonJS定义的模块分为:{模块引用(require)} {模块定义(exports)} {模块标识(module)}
require()用来引入外部模块;exports对象用于导出当前模块的方法或变量,唯一的导出口;module对象就代表模块本身。
疑问解决:
1.不要创建 String 对象。它会拖慢执行速度,并可能产生其他副作用:
该问题等效于:为什么说对象字面量赋值比new Object()高效?
var obj={};这个叫做用对象字面量初始化js变量,var obj=new Object();本质上是方法,方法调用涉及到proto链中遍历该方法,当找到该方法后,又会生产方法调用必须的堆栈信息,方法调用结束后,还要释放该堆栈。
已完成任务清单:
1.在阅读vue教程时发现很多知识漏洞,所以先进行了js知识的回顾,进行到了JavaScript 变量提升。
明日计划任务清单:
1.完成js在菜鸟教程上所有内容的回顾
2.根据vue教程进行学习