(1)let允许你声明一个作用域被限制在块级中的变量、语句或者表达式。在Function中局部变量推荐使用let变量,避免变量名冲突。
function varTest() {
var x = 1;
if (true) {
var x = 2; // 同样的变量!
console.log(x); // 2
}
console.log(x); // 2
}
function letTest() {
let x = 1;
if (true) {
let x = 2; // 不同的变量
console.log(x); // 2
}
console.log(x); // 1
}
(2)您可以在一条语句中声明很多变量。该语句以 var 开头,并使用逗号分隔变量即可:
var lastname="Doe", age=30, job="carpenter";
声明也可横跨多行:
var lastname="Doe",
age=30,
job="carpenter";
一条语句中声明的多个不可以赋同一个值:
var x,y,z=1;
x,y 为 undefined, z 为 1。
(3)当您声明新变量时,可以使用关键词 "new" 来声明其类型:
var carname=new String;
var x= new Number;
var y= new Boolean;
var cars= new Array;
var person= new Object;
(4)你可以使用以下语法创建对象方法:
methodName : function() { code lines }
你可以使用以下语法访问对象方法:
objectName.methodName()
JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象 |
(5)向未声明的 JavaScript 变量分配值
如果您把值赋给尚未声明的变量,该变量将被自动作为 window 的一个属性。
这条语句:
carname="Volvo";
将声明 window 的一个属性 carname。
非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以删除。
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); // 已经删除 报错变量未定义
(6)null是一个只有一个值的特殊类型。表示一个空对象引用。
用 typeof 检测 null 返回是object。 |
你可以设置为 null 来清空对象:
实例
var person = null; // 值为 null(空), 但类型为对象
(7)在 JavaScript 中, undefined 是一个没有设置值的变量。
typeof 一个没有值的变量会返回 undefined。
实例
var person; // 值为 undefined(空), 类型是undefined
任何变量都可以通过设置值为 undefined 来清空。 类型为 undefined.
实例
person = undefined; // 值为 undefined, 类型是undefined
(8)null 和 undefined 的值相等,但类型不等:
typeof undefined // undefined
typeof null // object
null === undefined // false
null == undefined // true
(9)constructor 属性返回所有 JavaScript 变量的构造函数
(10)
你可以使用 constructor 属性来查看对象是否为数组 (包含字符串 "Array"):
实例
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
(10)用String(true)转换成字符串,或者true.tostring()转换成字符串
Numer(true)可以转换成数字
parseFloat() | 解析一个字符串,并返回一个浮点数。 |
parseInt() | 解析一个字符串,并返回一个整数。 |
(11)我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错。
instanceof
可通过 instanceof 操作符来判断对象的具体类型,语法格式:
var result = objectName instanceof objectType
之前的typeof在区分Array或者Date的时候是不能区分的。
(12)JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。
JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。
以下两个实例将获得相同的结果:
(13)
在常规的比较中,数据类型是被忽略的,以下 if 条件语句返回 true:
var x = 10;
var y = "10";
if (x == y)
而在switch中是使用的===来比较的。
(14)添加逗号虽然语法没有问题,但是在不同的浏览器可能得到不同的结果。
var colors = [5, 6, 7,]; //这样数组的长度可能为3 也可能为4。
(15)在 JavaScript 中, 对象 使用 名字作为索引。
如果你使用名字作为索引,当访问数组时,JavaScript 会把数组重新定义为标准对象。
执行这样操作后,数组的方法及属性将不能再使用,否则会产生错误:
实例
var person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
var x = person.length; // person.length 返回 0
var y = person[0]; // person[0] 返回 undefined
(16)在 JavaScript 中, null 用于对象, undefined 用于变量,属性和方法。
(17)
function f1() {
console.log("助教好帅哦");
}
f1();
function f1() {
console.log("小苏好猥琐哦");
}
f1();
这两个f1()函数执行的都时下面这个函数,小苏好猥琐哦
但是var f2 = function () {
console.log("助教没有小杨帅");
};
f2();
f2 = function () {
console.log("小杨真的很帅");
};
f2();
这连个函数是初始化,所以上面的调用上面的函数,下面的调用下面的函数的。
//函数自调用
(function () {
console.log("阿涅哈斯诶呦");
})();
(function () {
console.log("嘎嘎")
})();
(18)自函数调用,但是这是一次性的。
(19)变量和函数同时提升的时候,肯定是变量提升在最前面,函数在后面。
(20)使用json的对象的时候
var json = {
"name": "小明",
"age": "10",
"sex": "男"
};
//遍历对象,是不能通过for循环遍历,无序
//key是一个变量,这个变量中存储的是该对象的所有的属性的名字
for (var key in json) {
console.log(key + "===========" + json[key]);
}必须使用json[key],使用json.key是undefined,这个要记住。