JavaScript新人总结

#JS简单总结
##1.JS简介

JavaScript(通常缩写为JS)是一种高级的、解释型的编程语言。JavaScript是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持I/O,比如网络、存储和图形等,但这些都可以由它的宿主环境提供支持。它已经由ECMA(欧洲电脑制造商协会)通过ECMAScript实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持。维基

###通常完整的JavaScript由以下几部分组成

  • ECMAScript
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

###JavaScript常用来完成以下任务:

  • 嵌入动态文本于HTML页面
  • 对浏览器事件作出响应
  • 读写HTML元素
  • 在数据被提交到服务器之前验证数据
  • 检测访客的浏览器信息
  • 控制cookies,包括创建和修改等

##2.引用方式

###1)行间式

<div id="one"onload="one.style.backgroundColor='#fff'">
</div>

###2)内联式 页面< script > 标签

<script>
	
</script>

###3)外联式

<script src="myScript.js"></script>

##3.基本语法

var x, y;	// 如何声明变量
x = 7; y = 8;	// 如何赋值
z = x + y;	// 如何计算值

###JavaScript 注释
双斜杠 // 或 /* 与 */ 之间的代码被视为注释。

var x = 7;   // 会执行

// var x = 8;   不会执行

###JavaScript 对大小写敏感
所有 JavaScript 标识符对大小写敏感。区分大小写
###标识符与关键字

var a = 110;  // var 关键字   a变量名标识符

##4.数据类型
###1)基本数据类型(数据存储在栈区)

  • 数值型

JavaScript不区分整型和浮点型,就只有一种数字类型。JavaScript 只有一种数值类型,写数值时用不用小数点均可,超大或超小的数值可以用科学计数法来写。

var a = 1.1;
var b = 2;
var c = 233e5;  // 13300000
var d = 123e-5;  // 0.001
  • 布尔值型

布尔值只有两个值:true 或 false。

var x = true;
var y = false;
  • 字符串型

字符串是一串字符,字符串被引号包围,可使用单引号或双引号。

var hello = "hello world";   // 使用双引号
var hello = 'hello world';   // 使用单引号
  • Undefined

在 JavaScript 中,没有值的变量,其值是 undefined。typeof 也返回 undefined。

var a;    // 值是 undefined,类型是 undefined
  • Null

在 JavaScript 中,null 是 “nothing”。它被看做不存在的事物,表示空。可以通过设置值为 null 清空对象。

var a = null;// 值是 null,但是类型仍然是对象

###2)引用数据类型(数据存储在堆区)

  • 数组

JavaScript 数组用方括号书写,数组的项目由逗号分隔。

var arr = [one", "two", "three"];
  • 对象

JavaScript 对象用花括号来书写。对象属性是 name:value 对,由逗号分隔。

var arr = ["a","b","c"];
  • 函数
function  var f = function (){ var i=0; var j=1;}

##5.JS代码在执行时的两个阶段
###JS代码在执行时分两个阶段:

  • 预编译
  • 代码执行
    每一个阶段做的事情是不一样的。

定义变量和声明变量:
定义变量:var a = 110; 定义 = 声明+赋值
声明变量:var a = 110; 说的声明仅仅是说var a 后面是赋值

预编译: 提升
把加var的变量进行提升 变量声明会提升 变量的赋值是不会提升
提升到了代码段最前面
把使用function声明的函数进行提升 提升的是整个函数声明

代码的执行:
一行一行执行
##6.初步了解执行上下文( Execute Context)
执行上下文( Execute Context):EC

EC的作用:给代码提供数据

代码分两类:

  • 全局代码 函数外面的代码叫全局代码
  • 函数代码 一个函数就是一个局部代码

全局执行上下文
全局代码在执行时时,就会产生全局的EC。 EG(G)
局部执行上下文:
函数代码在执行时,就会产生局部的EC。调用一个函数就产生一个EC,调用100个函数,就产生100个EC。

EC栈:
栈:杯子
每产生一个EC就会放到杯子中,说白了,就是杯子中放鸡蛋。
栈:先放进去的后出来

##7.加var的变量和没有加var的变量的区别

###1)在全局代码中,加var会提升,没有var的不会提升。

console.log(a);
a = 110;  // a is not defined

###2)不管加没加var的全局变量,都会作为window的属性

var a = 1;
b = 2;
console.log(window.a)
console.log(window.b)

###3)没有加var的变量,只能作为全局变量,只要是全局变量,肯定是window的属性

 function f() {
     a = 666;
 }
 f()
 console.log(window.a)

##4)加var的局部变量,不会作为window的属性

 function f() {
     var a = 666;
 }
 f()
 console.log(a)
 访问一个对象上不存在的属性,结果就是undefined
 console.log(window.a) // undefined

##8.let和const声明变量
###1)let声明的变量没有提升(let声明的变量也提升,仅仅是没有初始化)
console.log(a);
let a = 110; // Cannot access ‘a’ before initialization

###2)let 配合 {} 也可以形成块级作用域
if(true){
var a = 110; // 全局变量
// b只能在当前的{}中被访问到 出了块就访问不了
let b = 666; // let + {} 形成块级作用域
}
console.log(b); // b is not defined

###3)使用let声明的变量不会挂载到GO上
let a = 110;
console.log(window.a); // undefined 访问一个对象上没有属性,得到的就是und

###4)使用let不能重复声明
let a = 1;
let a = 2;
console.log(a); // Identifier ‘a’ has already been declared

###访住:不要使用var来定义变量 使用let声明变量

##9.闭包

  • 闭包概念:
    内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被终结了之后。CSDN

初看概念可能不太好理解,下面通过一个例子演示一下

function A(){
  var a = 10;  
  return function(){  
      console.log(a);
  }
}
var b = A();
b();

在这里插入图片描述

简单总结一下就是闭包找到的是其外部函数中对应变量的指。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值