JavaScript 小白入门基础篇一 - Go语言中文社区

JavaScript 小白入门基础篇一


数据类型

基本数据类型

单一的值
值和值之间没有关系
基本数据类型存在栈内存中 当比较两个基本数据类型时比较的就是值,就算赋值,一个值的变化不会影响另一个。

 var a = 10;
 var b = a;
 a++;
 console.log(a); //11
 console.log(b); //10

在这里插入图片描述

  • String 字符串

  • Boolean 布尔
    用于逻辑判断

  • NULL
    Null类型的值只有一个 就是null
    这个值专门是用来表示空对象
    typeof null 返回的事object

 var a = null
 console.log(typeof a); //object
  • undefined
    Undefined的值只有一个 就是undefined
    当声明一个变量 但不对其进行赋值
    typeof undefined 返回undefined
var a
console.log(typeof a); //undefined
  • Number
    所有数值都是Number类型 整数和浮点数
    浮点元素运算可能会得到一个不精确的值
    NAN是特殊的数字 Not A Number

引用数据类型

在对象中可以保存多个不同数据类型的属性
引用类型存在堆内存中,当比较两个引用数据类型的值时,就是比较内存地址,如果两个对象一模一样,但是地址是不同的,比较返回的值为false。

    var obj1 = new Object();
    var obj2 = new Object();
    obj1.age = 20;
    obj2.age = 20;
    console.log(obj1 == obj2); //false

赋值其实是把地址赋值

    var obj1 = new Object();
    obj1.age = 20;
    var obj2 = obj1;
    console.log(obj1.age);
    console.log(obj2.age);

对象是保存在堆内存中,当创建(new)一个对象时,就会在内存中开辟一个新空间,而变量保存的是对象的内存地址(对象引用),如果两个对象保存的事同一个对象引用,那么通过一个变量修改属性,另一个也会受到影响。
在这里插入图片描述

  • Object
    对象的分类:

    • 内置对象:全局对象、Math、Date、String、Number、Object、Function、Array、Boolean。
    • 宿主对象:由JS运行环境所提供的对象,目前为浏览器提供的对象BOM、DOM。
    • 自定义对象:由开发人员自己创建的对象。

创建对象:

  var obj= new Object();

使用new关键字来调用函数,该函数是构造函数constructor。
构造函数是专门用来创建对象的函数。

对象的字面量:

var obj = {
      uname: 'lyz',
      age: 21
    }

在创建对象时,直接指向对象的属性。(属性可以不加引号,但是有特殊的名字时,必须加引号。)
对象.属性名若无值,则返回undefined。

var obj = {
      uname: 'lyz',
      age: 21
    }
console.log(obj.like); //undefined
  • Function
    函数可以封装一个功能(代码),在需要的时候可以执行这些功能(代码)。
    typeof 函数名 -> function

使用函数声明创建函数

function f([a,b,...]) {
	//代码
    }

函数表达式

  var f = function () {
      console.log('f函数被调用了');
    }

函数解析器不会检查实参的数据类型
如果实参的数量小于形参的数量,那么没有定义的为undefined。
return后的语句不再执行
return后无值返回undefined

函数也可以作为对象的属性
如果以后一个函数作为对象的属性保存,那么称这个函数为对象的方法,调用函数就是调用对象的方法。只是名称不同。

变量提升和函数提升

变量提升

使用var声明的变量,会在所有的代码执行前声明,但不会赋值。但是声明变量前不用var,那么不能在执行前声明。

函数提升

使用函数声明形式创建的函数,会在所有代码执行前,就被创建,所以在函数调用声明在函数声明之前。
使用函数表达式创建的函数,不会被提前声明,所以不能在函数创建前带调用。

    f() // f函数被调用了
    f2() // 报错
		
	//函数声明	
    function f() {
      console.log('f函数被调用了');
    }
    //函数表达式
    var f2 = function () {
      console.log('f2函数被调用了');
    }

this指向

解析器在调用函数时,每次都会传入一个隐藏的形参,就是this。
this是一个对象 ,称函数执行的上下文对象。
调用函数的方式不同时,this的指向也不同。
在这里插入图片描述

  • 普通函数
function f() {
      console.log(this);// window
    }
f()
  • 对象中的方法
function f() {
      console.log(this);// obj
    }
 var obj = {
      uname: 'lyz',
      like: f
    }
 obj.like();
  • 绑定事件
var div = document.querySelector('div');
    div.onclick = function () {
      console.log(this); //<div></div>
}
  • 定时器
setTimeout(function () {
      console.log(this);
}, 10) //window
  • 立即执行函数
(function f() {
      console.log(this);// window
})(); //前后都要加分号
  • 构造函数
function Per() {
      this.uname = 'lyz';
      console.log(this); // lyz 
    }
    Per.prototype.speak = function () {
      console.log(this); // lyz
    }
    var lyz = new Per();
    lyz.speak();
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_44813417/article/details/107881555
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢