1.grammer
1.var
var a =1
局部变量(只有自己能拿到)或者定义为let
a=1
全局变量
var a ,b;
可声明多个变量
var a=1; a='hello'
上述知, java是一种动态类型语言,可随时更改类型。第二次赋值时,变量a已存在,所以无需在使用var命令
php/python/js 灵活的动态语言,java/c++静态语言
var x = 1; var x;
x声明了两次,第二次无效
var x = 1; var x = 2;
第二次声明时进行赋值,会覆盖掉前面的值
2.变量提升
JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。
console.log(a);
var a=1;
上面代码首先使用console.log方法,在控制台(console)显示变量a
的值。这时变量a还没有声明和赋值,所以这是一种错误的做法,但是实际上不会报错。因为存在变量提升,真正运行的是下面的代码。
var a;
console.log(a);
先声明,没有赋值,所以是undefined的状态
a = 1;
3.注释
// 单行注释
/*
多行
注释
*/
JavaScript 可以兼容 HTML 代码的注释,所以<!--
和-->
也被视为合法的单行注释,如下:
x = 1; <!-- x = 2; 只有x=1会执行
--> x = 3; -->只有在行首,才会被当成单行注释
function countdown(n) {
while (n --> 0) console.log(n); 将-->当作n--,直到减为0
}
countdown(3)
4.三元运算符(也可用于逻辑判断)
(条件) ? 表达式1 : 表达式2
上述代码中,如果“条件”为true,则返回“表达式1”的值,否则返回“表达式2”的值。
var even = (n % 2 === 0) ? true : false;
上面代码中,如果n可以被2整除,则even等于true,否则等于false
上述三元运算符与下方的if语句结果相等同
var even;
if (n % 2 === 0) {
even = true;
} else {
even = false;
}
var myVar;
console.log(
myVar ? 判断有无值
'myVar has a value' : 有值输出这个
'myVar does not have a value' 无值输出这个
)