JavaScript语法和类型

var
声明一个变量,可选择将其初始化为一个值
let
声明一个块作用域的局部变量,可选择将其初始化为一个值
const
声明一个只读的常量

变量
一个JS标识符必须以字母、下划线或者美元符号开头;后续的字符可以是数字,
而且JS语言区分大小写

声明变量
1.使用关键词var。例如var a=1,这个语法可以用来声明局部变量和全局变量
2.直接赋值。例如,x=1。这样就会声明一个全局变量并会在严格模式下产生一个
ReferenceError引用错误,表明一个不存在的变量被引用。声明变量时不应该用这种方式
3.使用关键词let。例如let y=2。这个语法可以用来声明块作用域的局部变量

变量求值
用var或let声明的且未赋值的变量,值会被设定为undifined。
试图访问一个未声明的变量或者访问一个使用let声明的但未初始化的变量会导致一个ReferenceError
异常被抛出
可以使用undefined来判断变量是否已赋值

var x;
if(x===undefined){
	doThis();
	}else{
	doThat();
}

undefined值相当于布尔值的false

var x;
if(!x){
	myFunction();
}

数值环境中undefined值会被转换为NaN

var x;
a+2 //NaN

对一个null变量求值时,空值null在数值类型环境下会被当作0来对待,布尔类型环境中会被当作false  

var n=null;
typeof(n); //object 

 

变量的作用域

在所有函数之外声明的变量叫做全局变量,它可被当前文档中的任何其他代码访问。在函数内部声明的变量,叫做局部变量,它只能在该函数内部引用。

if (true) {
    var x = 1;
}
console.log(x)  // 1

 控制台输出1,因为x的作用域是声明了x的那个函数(或全局范围),而不是if 语句块

if (true) {
    let y = 1
}
console.log(y);  //RefereceError:x is not defined

 

变量声明提升

 JavaScript可以引用稍后声明的变量而不会引发异常。这一概念成为变量声明提升;然而提升后的变量返回undefined值

console.log(x === undefined);
var x = 3;

 

函数提升

对于函数,只有函数声明会被提升到顶部,而不包括函数表达式。

/ * 函数声明 */
foo;  // "bar"
function foo(){
    console.log("bar");
}

 

全局变量

全局变量实际上是全局对象的属性。在网页中,全局对象是window,所以可是用形如window.variable的语法来设置和访问全局变量。

 

常量

可以使用关键字const创建以一个只读的常量。常量标识符的命名规则和变量相同:必须以字母、下划线或美元符号开头并可以包含字母、数字或下划线。

const x = "xiaobai";  

常量不可以通过赋值改变其值,也不可以在脚本运行时重新声明。它必须被初始化为某个值。

常量的作用域规则和let块级作用域变量相同。若省略const关键字,则该标识符将被视为变量。

在同一作用域中,不能使用与变量名或函数相同的名字来命名变量。

 

 

  

 

posted @ 2017-08-31 20:26  吃柚子的小白  阅读(165)  评论(0编辑  收藏  举报