1.4-12
1、var和let区别?
//1.变量提升 var 有变量提升 let没有
console.log(a);//undefined
var a=10;
console.log(m);//报错
let m=10;
//2.let存在暂时性死区
// 块级作用域内let又声明了一个局部变量a,导致后者绑定这个块级作用域
//所以在let声明变量前,对a赋值会报错 而且let没有变量提升
var a=100;
{
console.log(a);
let a=10;
}
// 3.let不能在一个作用域内部重复声明
let c=10;
let c=20;//报错
// var声明以后 let不能声明,声明也会存在重复声明报错的情况
var a=10;
let a=122; //报错
2、分析代码执行结果?
var a=123;
if(true){
a='zsh';
let a;
}//报错 let没有变量提升
3、补全代码
//补充前
var person={
name:'zs',
age:12
}
let str=` `;
结果呈现:用户的姓名为 ,年龄是
result.innerHTML=str;
//补充后
var person={
name:'zs',
age:12
}
let str=`用户的姓名为${person.name},年龄是${person.age} `;
result.innerHTML=str;
//结果呈现:用户的姓名为 zs,年龄是12
4、将下面字符串改用模板字符串实现?
$("#result").append(
"He is <b>"+person.name+"</b>"+"and we wish to
know his"+person.age+".That is all" )
//模板字符串
$("#result").append(`He is <b>${person.name}</b>and we wish to
know his${person.age}.That is all` )
5、下面程序输出的结果是?
let object = { first: 'Bill', lasts: 'Gates' };
let { first: firstName, last: lastName } = object;
console.log(firstName+'\t'+lastName);
// 第一个先找到同名的属性first 然后给变量赋值
// 第二个找不到同名的属性导致取不到值,最后等于undefined。
6、下列程序执行f()函数运行的结果是?
var tmp = new Date();//全局变量
function f(){
console.log(tmp);
if (false){
var tmp = "hello world";//局部变量 声明提前
}
}
f()
//undefined
7、对比以下两道程序输出的值相同吗?
A程序
var a = [];
for (let i = 0; i < 10; i++) {//let 声明生产块级作用域,每一个都是独立的。打印的i和索引里面的i是相同
a[i] = function () {
console.log(i);
};
}
a[8](); //8
a[9](); //9
B程序
var a = [];
for (var i = 0; i < 10; i++) {//a函数会在for循环之后执行,输出结果 10,10
a[i] = function () {
console.log(i);
};
}
a[8](); //10
a[9](); //10
2 4-14
1、画出 object person student原型链关系图
1.编写程序使用ES6定义 Person类,包括类实例属性(name,age),实例方法say()该方法
返回name和age字符串
class Person{
constructor(name,age){
this.name=name;
this.age=age;
}
say(){
console.log(this.name+this.age);
}
}
var person=new Person("zs",11);
person.say();
2.判断下面程序执行结果:
var p=new Person();
console.log(p.__proto__===Person.prototype)//true
3.下面程序正确吗?错在哪里?如何改正?
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
}
class ColorPoint extends Point {
constructor(x, y, color) {
super(x, y);
this.color = color; // super函数要再this函数前调用
// super(x, y);** //子函数的实例化对象构建基于父类加工 只有super才能返回父类
}
}
var cp=new ColorPoint(10,20,'red');
4.下面程序执行结果为?
class Parent {
//静态方法
static myMethod(msg) {
console.log('static', msg);
}
myMethod(msg) {
console.log('instance', msg);
}
}
class Child extends Parent {
static myMethod(msg) {
super.myMethod(msg);
}
myMethod(msg) {
super.myMethod(msg);
}
}
Child.myMethod(1); // static 1
var child = new Child();
child.myMethod(2); // instance 2
5.请利用class重新定义Cat,并让它从已有的Animal继承,然后新增一个方法say(),
返回字符串’Hello, xxx!’
class Animal {
constructor(name) {
this.name = name;
}
}
class Cat extends Animal{
constructor (name){
super(name);
}
say(){
console.log("hello world")
}
}
var cat=new Cat();
cat.say();
6.接上面程序分析下面代码执行结果为
var kitty = new Cat('Kitty');
var doraemon = new Cat('哆啦A梦');
if ((new Cat('x') instanceof Animal) && kitty && kitty.name === 'Kitty' && kitty.say &&
typeof kitty.say === 'function' && kitty.say() === 'Hello,Kitty!' &&
kitty.say === doraemon.say) {
console.log('测试通过!');
} else {
console.log('测试失败!');
}
//测试失败!
7.下面程序执行结果为
(typeof (new (class { class () {} })));//Object
//class{} 是一个类
//new 是实例化 对象
3 4-16
1、node到底是什么?
node是一个平台 是用c++开发的 node提供了运行环境 让js可以运行在服务器上 。
2、node 和 java区别?
1、Node比Java 开发更快 :
2、Node.js 前后端都采用Javascript,代表未来发展的趋势,而java则是现在的最流行的服务器端编程语言。
3、Node.js和Java EE——一种是解释语言,一种是编译语言。
4、Java是一种编程语言,而NodeJS是用C,C ++编写的基于 Chrome V8 引擎的 JavaScript 运行环境。
5、Java严格来说是一种与浏览器无关的服务器端语言,而Node JS可以在客户端和服务器端有效地使用。
3node 和 php区别?
1.处理并发时的不同
2.Node.js的灵活性是这里需要特别提及的另一件事。该框架对它或任何类型的依赖项都没有很大的限制。
3.Node.js的另一个巨大好处是可以访问JSON。
4.PHP将HTML与框架语法结合在一起,所以扩展具有更多功能的PHP应用程序就存在困难。
5.PHP的总体代码库很大,因此代码管理不方便