JS变量和函数学习心得

494 阅读2分钟

最近几天,我初步学习了JS的变量和函数,有所收获,在此做一些记录。

变量

变量类型

类型 类型名
字符串 String
数字 Number
数组 Array
布尔 Bool
对象 Object
无值默认 Undefined

变量的声明与赋值

变量的声明

var a;
let b;

变量的赋值

var a=1;
var str="hello";
let c=true;

变量的提升

用var声明变量,在运行时,会发生提升,全局变量会提升至整个js代码的最前端;局部变量会提升至函数体的最前端

关于var和let

使用var声明变量在一些实际使用场景有些许不足之处,如:

  • 用var声明变量,在运行时,会发生提升,全局变量会提升至整个js代码的最前端;局部变量会提升至函数体的最前端
  • 用var声明变量上,如果有多个同名变量的出现,后面的会覆盖前面的

鉴于var的这些特性,在一些特定场景,所以会发生一些问题。所以建议使用let。

const

用于常量的声明,例如:

const a=2;

数据的存储

对于基本数据类型来说,它们是存储在栈区 ,对于引用数据类型说来,它们是存储在堆区。(数组存储在堆区)

全局变量和局部变量

变量均有全局变量和局部变量之分

这里的a为局部变量,因为它在函数体内部
 function f(){
        var a = 1;  
        console.log(name)
 }
这里的b为全局变量
 var b = 100;
 function f(){
     console.log(b)
 }

一般可以认为,全局变量和局部变量的分界点是函数,函数内为局部变量,函数外为全局变量

函数

函数在js中占有举足轻重的地位,js是以函数为核心的编程语言

初识函数

函数是指一段在一起的、可以做某一件事儿的程序。 ——百度百科

函数的基本结构

function name(形参1,形参2,形参3) {
    函数的内容
}

形参与实参

如上面的函数基本结构,在定义函数时,括号里的为形式参数,实际使用该函数时调用的参数为实参。例如:

function sum(a,b) {  //此处的a和b为形参
    return a + b;
}
add(0,21);           //此处的0和21为实参

函数参数的传递也可分为按值传递和引用传递,即传值和传地址

函数的提升

与用var声明变量类似,使用function声明的函数,也会有提升现象。