# Var

# 定义变量

# var

var a // 定义了 a
a = 2

var 是定义变量的一种方式,它的作用于就是当前的局部环境,可以是函数里的局部变量。

a = 2

这样的未声明变量就是全局变量

var x =0; 
function f(){
    var x=y=0
}
f();
console.log(x);
console.log(y);

来看这段代码,打印是是 0 1 而不是报错未定义。因为 x 在全局被定义,而 y 虽然在函数 f 里被定义,但被声明为了全部变量。

但是注意,如果这样写:

function f(){
    var x,y=x=0;
}

就会报错,因为定义 y 为局部变量。

多个变量初始化:

var x,y=x=0;

还是看这个代码,它会先定义两个变量, xy ,其中 x 会被先赋值为 0,然后再将 x 的值赋值给 y,最后两个变量都被初始化为 0.

但是如果是:

var x=y,y=0
console.log(x,y)

x 就是 undefined ,因为 x 用 y 赋值,而此时 y 还没有赋值。

重复定义:

var myName = 'Chris';
var myName = 'Bob';
console.log(myName)

var 来重复定义变量不会报错。

# 变量提升

变量提升指的是:

由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明。这意味着变量可以在声明之前使用,这个行为叫做 “hoisting”。“hoisting” 就像是把所有的变量声明移动到函数或者全局代码的开头位置。

bla = 2
var bla;
// ...
// 可以隐式地(implicitly)将以上代码理解为:
var bla;
bla = 2;

说白了,就是用 var 声明的变量会把声明(注意是声明,而不是赋值)自动挪动到作用域的顶部。

console.log(s)
var s 
s =2
console.log(s)

打印:

image-20220128230024614

第一个打印代码 console.log(s)s 虽然没有定义,但是由于变量提升,var 挪动到了最前边,所以结果是 undefined 而不是报错。

# 数组

# 数组 push

push 是在后面进行插入

const array = [3, 2, 1]
const newFirstElement = 4
array.push(newFirstElement)
var newArray = array
console.log(newArray);

打印结果:

[ 3, 2, 1, 4 ]

pop() 来取出最后一个元素

# 在前面插入
const array = [3, 2, 1]
const newFirstElement = 4
array.unshift(newFirstElement) // [ 4, 3, 2, 1 ]
console.log(array);

unshift 在前面插入,用 shift 取出前面的那个数。

更新于

请我喝[茶]~( ̄▽ ̄)~*

Kalice 微信支付

微信支付

Kalice 支付宝

支付宝