标签:undefined 可变 code 声明 [] 基本数据 des 布尔值 关键词
JavaScript基础例:var hello = `hi, i am yhy`
`${hello}`
var alist=[]
,添加元素alist[索引]=元素
var aList = []
undefined
var aList = [1,2,3,4,5]
undefined
aList
Array(5) [ 1, 2, 3, 4, 5 ]
typeof aList
"object"
aList.name=‘yhyang‘
"yhyang"
aList
(5) […]
?
0: 1
?
1: 2
?
2: 3
?
3: 4
?
4: 5
?
length: 5
?
name: "yhyang"
?
<prototype>: Array []
aList.length
5
aList.age=18
18
aList.length
5
aList.length=3
3
aList
Array(3) [ 1, 2, 3 ]
delete aList["name"]
true
aList
Array(3) [ 1, 2, 3 ]
delete aList[0]
true
aList
Array(3) [ <1 empty slot>, 2, 3 ]
aList = []
Array []
a
ReferenceError: a is not defined[详细了解] debugger eval code:1:1
aList =[[1,2,3],[4,5,6],[7,8,9]]
Array(3) [ (3) […], (3) […], (3) […] ]
aList
(3) […]
?
0: Array(3) [ 1, 2, 3 ]
?
1: Array(3) [ 4, 5, 6 ]
?
2: Array(3) [ 7, 8, 9 ]
?
length: 3
?
<prototype>: Array []
aList[1][1]
5
var obj_a = {} typeof obj_a obj_a.name = ‘yhyang‘
当key为关键字时obj_b["for"] = ‘test‘
,key默认不允许带-号obj_b["aaa-bbb"] = ‘test‘
取值的时候也用[""]来取var obj_this = {name:‘yhyang‘}
obj_this.doSomeThing = function(){
console.log(this); //此处的this为对象obj_this调用,所以值为name:‘yhyang‘
var that = this;
function test(){
console.log(this); //此处this为全局this
console.log(that);
}
test();
}
obj_this.doSomeThing();
function hello(){
console.log(this); //此处this为全局this
obj = {}
obj.f = function test(){
console.log(this); //此处this为对象f的this,所以值为f
}
obj.f();
}
hello();
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
JavaScript 函数语法
函数就是包裹在花括号中的代码块,前面使用了关键词 function:
function functionname()
{
这里是要执行的代码
}
函数表达式
JavaScript 函数可以通过一个表达式定义。
函数表达式可以存储在变量中:
var x = function (a, b) {return a * b};
在函数表达式存储在变量后,变量也可作为一个函数使用:
var x = function (a, b) {return a * b};
var z = x(4, 3);
function f5(){
let n = 5;
if(true){
let n=10;
}
console.log(n);
}
f5();
此时打印的值为5,let定义的n=5 n=10分属于两个块
function f10(){
var n=5;
if(true){
var=10;
}
console.log(n);
}
f10();
此时打印10,当变量用var定义时,后边的会把前边的的覆盖,var n=10会提升到var n=5的位置。
function foo(){
const a=true;
function bar(){
const a=false;
console.log(a);
}
bar();
console.log(a);
}
foo();
在不同的块中,同名的const变量可以重新赋值
var tmp = new Date();
function ff(){
//var tmp;
console.log(tmp);
if(false){
console.log(tmp);
var tmp=‘hello‘;
}
}
ff();
上例中第一个console.log(tmp)会打印undefined,原因是最后边的var tmp=‘hello‘会提升到function的下边变成var tmp,只是定义,没有值,所以会打印undefined
//var的for循环
var s=‘hello‘;
for(var i=0;i<s;i++){
console.log(s[i]);
}
i;
会打印i的值为5,把var换成let可让i只在for内部使用,i的值变为is not defined
function createIncrementor(start){
return function (){
return start++;
};
}
var inc = createIncrementor(5);
console.log(inc());
console.log(inc());
console.log(inc());
console.log(inc());
5的值会累加
var f = v => v;
// 相当于下边
var f = function (v) {
return v;
};
var f = () => 5;
var f = function () {return 5;};
var sum = (num1,num2) => num1 + num2;
var sum = function(num1,num2){return num1 + num2;};
[,‘A‘].forEach((x,i) => console.log(i)); // forEach方法 x,i对应前边数组的下标
[7,‘A‘].forEach((x,i) => console.log(i));
[7,‘A‘].forEach(i => console.log(i));
[‘a‘,,‘b‘].filter(x =>true);
[1,2,3,4,5].filter(x => x>2);
[,‘a‘].every(x => x===‘a‘);
[1,2,3,4,5].every(x => x>2);
[1,,2].reduce((x,y) => x+y);
[,‘a‘].some(x=>x !==‘a‘)
[,‘a‘].map(x=>1);
[1,2,3,4,5].map(x => x*2);
function Timer(){
this.s1 = 0;
this.s2 = 0;
setInterval(() => this.s1++, 1000);
setInterval(function(){
this.s2++;},1000);
}
var timer = new Timer();
setTimeout(() => console.log(‘s1:‘,timer.s1),3100);
setTimeout(() =>console.log(‘s2:‘,timer.s2),3100);
const map= new Map() cm.set(‘name‘,‘yhyang‘)
var s1 = new Set() s1.add(1) s1.add(2)
标签:undefined 可变 code 声明 [] 基本数据 des 布尔值 关键词
原文地址:http://blog.51cto.com/445153/2312949