javaScript简介

javaScript历史

1995年,Netscape公司是凭借Navigator浏览器成为当时第一代互联网公司。

网景公司希望在HTML界面上加一点动态效果,于是叫Brendan Erich这个员工设计一下,结果他只用了10天的时间。

为啥叫javaScript呢?因为当时java很火,想要借由它的名气,其实这两个语言就语法有点类似,其他没有关系。

ECMAScript

ECMA(European Computer Manufacturers Association)欧洲计算机制造商协会组织定制了JavaScript语言的标准,被称为ECMAScript标准。

ECMAScript和javaScript的区别

所以简单说来就是,ECMAScript是一种语言标准,而JavaScript是网景公司对ECMAScript标准的一种实现。

ECMAScript的历史

1996.11 Netscape公司决定将JavaScript提交给ECMA组织

1997 ECMA组织发布ES1.0版本

1998.6 发布ES2.0版本

1999.12 发布ES3.0版本 是一个巨大的成功,获得广泛支持

2000 ES4.0开始酝酿,但没有通过,大部分内容被ES6.0继承

ES6.0指定的起点是2000年

2007.10 ES4.0草案发布 发生了严重分歧

2008.7 各方分歧太大,决定终止ES4.0开发,关于现有功能改善的一小部分

发布为ES3.1其他激进部分放入以后的版本。会后不久ES3.1改名

ES5.0

20.12 ES5.0正式发布

2011.6 ES5.1版发布并且成为ISO国际标准

2013.3 ES6.0草案冻结不在添加新功能。新功能放到ES7.0中。

2013.12 ES6草案发布

2015.6 ES6正式通过,成为国际标准

从2000年算起,已经经过了15年

目前ES7和ES9(2018)都已经在筹备当中并且发布了一些API.

变量

变量命名规则

  1. 变量必须使用字母、下划线(_)或者美元符($)开始。
  2. 可以使用任意多个英文字母、数字、下划线()或者美元符($)组成。
  3. 不能使用Javascript关键字和Javascript保留字来进行命名
  4. 变量名严格区别大小写,如A何a是两个不同的变量

变量的类型

javaScript是动态类型

变量的类型随着值的改变改变

var x;
undefined
x=1;
1
x='zx';
"zx"

Number(数值)

javaScript不区分整数和浮点数

var z = 12;
var x = 1.23;

常见问题NaN(Not a Number)

常用方法

可以把字符串数字转成真的数字类型,但是不是数字的字符串不能转化
parseInt('123');
123 parseInt('zx');
NaN parseFloat('1.2');
1.2

String(字符串)

字符串需要用单引号或者双引号包括起来

可以数字和字符串拼接,最后为字符串
var name = 'zx';
var age = 18;
var c = name+'is'+sex;
console.log(c); zxis18

模板字符串的使用(类似python的f“${}”)

注意使用的反引号(`)

var name = 'zx';
var obj = `Hello ${name}`;
console.log(obj); Hello zx

Boolean(布尔值)

""(空字符串)、0、null、undefined、NaN都是false

null和undefined

null:表示值为空,一般在需要指定或清空一个变量时才会使用,如name = null

undefind:undefined表示声明了一个变量但是没有初始化值时,如var a。

还有就是函数没有明确的返回值时,默认的返回值也是undefined

typeof

对变量或值调用 typeof 运算符将返回下列值之一:

  • undefined - 如果变量是 Undefined 类型的
  • boolean - 如果变量是 Boolean 类型的
  • number - 如果变量是 Number 类型的
  • string - 如果变量是 String 类型的
  • object - 如果变量是一种引用类型或 Null 类型的

其他

数组

数组类似python中的列表

数组是一个值的集合,每个值都有一个索引号,从0开始,每个索引都有一个相应的值,根据需要添加更多数值。

var student = ['zx','wl','hh']

i++和++i

a=i++
a=++i

i++ 先赋值再运算,即先 a = i,后 i = i+1;

++i 先运算再赋值,即先 i = i+1,后 a = i;

当不需要赋值时两者没有区别(在for循环中,两种是没有区别的)

三元函数

var a=10,b=20;
var x=a>b ?a:(b=="20")?a:b; 10

do…while循环

最后一种循环是do { ... } while()循环,它和while循环的唯一区别在于,不是在每次循环开始的时候判断条件,而是在每次循环完成的时候判断条件:

var n = 1;
do{
n++;
console.log(n)
}while(n<10); 2
3
4
5
6
7
8
9
10

函数

普通函数

function zx(){
alert("haha")
}

带参函数

function zx(a,b){
console.log(a,b)
}

匿名函数和立即执行函数

var sum = function(a, b){
   return a + b;
}
sum(1, 2); (function(a, b){
   return a + b;
})(1, 2)

ES6中允许使用“箭头”(=>)定义函数

var zx = () => 5;

var sum = (num1, num2) => num1 + num2;

arguments

function add() {
var sum =0,
len = arguments.length;
for(var i=0; i<len; i++){
sum += arguments[i];
}
return sum;
}
add() // 0
add(1) // 1
add(1,2,3,4); // 10

多参数函数

function zx(a,...args){
console.log(a)
console.log(args)
}
zx(1,2,3,4) 1
[2,3,4]

返回值注意

python函数--以元组的形式返回所有值

def zx():
return 1,2
zx()
(1,2)

js函数--返回最后一个值

function zx(){
return 1,2
}
zx() 2

var和let

ES6可以let定义块级作用域变量

1.例题-变量提升

var zx=10;
cc();
console.log(zx)
function cc(){
console.log(zx);
var zx=100
console.log(zx)
} undefined
100
10

其实代码相当于

var zx=10;
cc();
console.log(zx)
function cc(){
var zx;
console.log(zx);
zx=100
console.log(zx)
}

let不会变量提升与暂时性死区

暂时性死区

必须要等let声明结束,变量才能使用

var c=10;
function zx(){
console.log(c)
let c=20;
}
zx() c is not defind

let定义块级域变量

{
let i = 10;
}
console.log(i); i is not defined

let不能重复定义

js基础-函数-var和let的区别的更多相关文章

  1. JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象

       前   言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...

  2. JS基础——函数的创建和使用

    在JS中函数在使用时实质上和我们平时学习的编程语言中的函数类似,它相同也具有函数名,參数,返回值,函数体等这些寻常函数所具有的内容.可是作为一种脚本语言,它确实也有自己不一样的地方. 一.创建 < ...

  3. js基础-函数基础

    js 先对函数进行解析 然后在执行函数 定义一个函数 实现求两个数的乘 function mult(a,b){ return a*b; } mult(1,3) 计算1 - n 的和 封装成函数 fun ...

  4. [转]JS基础之undefined与null的区别

    在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理.于是,细想之后,写下本文,请各位 ...

  5. 前端小课堂 js:函数的创建方式及区别

    js 函数的创建大体有这几种方式: -1-函数表达式(函数字面量): 说白了就是把一个函数赋值给了一个变量. var fun1 = function(index){ alert(index); } f ...

  6. JavaScript基础一(js基础函数与运算符)

    [使用js的三种方式] 1.在HTML标签中,直接内嵌js(并不提倡使用) <button onclick=" alert('点就点')"> 点我啊</butto ...

  7. js基础 -函数

    函数 定义 var a =function (){...}; 匿名函数方式定义function a(){} 直接定义 函数的参数arguments 可以接收任意个参数,是个像数组的内容,可for in ...

  8. JS基础函数

    函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块 <script> function demo(){ var a = 10; var b = 25; var sum = a + ...

  9. js 基础 函数传值

    让我忽略的函数传值问题 function box(num){ num += 10;  // num(有色的num) 实际就是arguments[0] ,如果参数没有num,则函数体的num(有色的nu ...

随机推荐

  1. ABAP中时间戳的处理

    UTC(UTC, Universal Time Coordinated,通用协调时)时间戳,分为长时间戳和段时间戳,其中长时间戳餐开始的系统的数据元素TIMESTAMPL,类型为DEC(21,7):而 ...

  2. 学习笔记69_Logistic回归

    Logistic回归(逻辑回归)进行分类的主要思想:根据现有数据对分类边界线建立回归公式,以此进行分类. 知乎上的简述: 该算法可根据已知的一系列因变量估计离散数值(比方说二进制数值 0 或 1 ,是 ...

  3. 千与千寻主题曲beep函数版

    在出代码之前,我们向来了解一下Beep函数. 例: Beep(,); 这个表示575Hz响100ms. 下面给出代码: #include <bits/stdc++.h> #include ...

  4. SP5150 JMFILTER - Junk-Mail Filte(并查集)

    直秒并查集.这题的难点就在于怎么删点.如果要删的是叶节点,那还好,直接刨掉即可 如果是中间节点甚至是根节点,那就不好办了..... solution: 对于独立一个点,我可以用邻接表模拟,然后用并查集 ...

  5. MapReduce任务提交源码分析

    为了测试MapReduce提交的详细流程.需要在提交这一步打上断点: F7进入方法: 进入submit方法: 注意这个connect方法,它在连接谁呢?我们知道,Driver是作为客户端存在的,那么客 ...

  6. [转载]1.1 UiPath下载安装与激活

    一.UiPath下载 1.打开官网https://www.uipath.com.cn,点击开始试用 2.选择获取UiPath社区版 3.填写姓.名.电子邮箱地址.专业领域.职位.公司.公司所在行业.国 ...

  7. python经典算法面试题1.5:如何找出单链表中的倒数第K个元素

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. [微软笔试题] 难度系数:⭐⭐⭐ 考察频率:⭐⭐⭐⭐⭐ 题目描 ...

  8. Scrapy进阶知识点总结(二)——选择器Selectors

    1. Selectors选择器 在抓取网页时,您需要执行的最常见任务是从HTML源提取数据.有几个库可用于实现此目的,例如: BeautifulSoup是Python程序员中非常流行的Web抓取库,它 ...

  9. docker项目——上线tomcat网站

    项目: 1.使用docker部署tomcat环境 2.上线网站 3.完成访问使用等 第一步.启动基于tomcat镜像的容器 a.导入镜像 [root@localhost ~]# docker load ...

  10. T-SQL Part XII: Access Remote SQL Server

    要链接远程的SQL Server,需要一下几个步骤(以下的步骤都是在远程系统上进行): 确认远程SQL Server所监听的端口号 官方的文档是使用SQL Server Configuration M ...