服务器端js和浏览器端js的区别
/**
* 1.js运行在浏览器端有
* ECMAScript:js语法(变量,数据类型,表达式,代码结构)
* Bom:浏览器对象模型,用js去操作浏览器窗口
* Dom:文档对象模型,用js去操作页面上的dom树
*
* 2.js运行在服务器端只有
* ECMAScript:js语法(变量,数据类型,表达式,代码结构)
*
* 3.所有在node.js中不能写dom和bom语法的东西
*/
//例如 正常的js语法没问题的
var name = 'chen';
console.log(name);//正常返回
//但是用dom和bom的话 就会报错
console.log(document);//document is not defined
alert(22);//alert is not defined
将符合es6的代码转换为es5的代码的网站 https://www.babeljs.cn/
就是能将es6的新语法转换为符合es5的旧语法的网站
let关键字和const关键字
let关键字
/**
* var是声明变量
* 有变量提升
* 没有块级作用域,是函数作用域
* 可以重复声明
*
* let也是声明变量
* 没有变量提升
* 有块级作用域
* 不可以重复声明
*/
// 变量提升
console.log(age);
var age = 38;//不会报错 但是结果会是undefined 因为是在声明前调用的 利用的是AO或者说是变量提升
let age = 38;//会报错 不利用的是AO或者说是变量提升
//块级作用域
for(var i = 0; i < 10; i++){
}
console.log(i);//不会报错 输出i的值
for(let j = 0; j < 10; j++){
}
console.log(j);//会报错 用let声明外面是找不到j的相当于局部变量
//重复声明
var num = 20;
var num = 10;
console.log(num);//不会报错
let num1 = 20;
let num1 = 50;
console.log(num1);//会报错 不能重复声明
//都可以重新赋值
var num = 20;
num = 10;
console.log(num);//不会报错
let num1 = 20;
num1 = 50;
console.log(num1);//不会报错
const关键字
/**
* const关键字是声明常量的 就是一旦声明就不允许改了 比如圆周率
* 没有变量提升
* 有块级作用域
* 不可以重复声明
* 不能重新赋值(声明时 必须初始化)
*/
console.log(num);
const num = 100;
{
const num1 = 100;
}
console.log(num1);
const num2 = 100;
const num2 = 10;
const num3 = 20;
num3 = 10;
const num4;