zoukankan      html  css  js  c++  java
  • js基础-函数-var和let的区别

    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不能重复定义

  • 相关阅读:
    Django中怎么做图片上传--图片展示
    Django框架获取各种form表单数据
    django中的数据库迁移
    flask中单选、多选、下拉框的获取
    解析web应用处理流程
    细说flask数据库迁移
    vue和jQuery嵌套实现异步ajax通信
    java
    nginx的主要用途
    mvn常用命令
  • 原文地址:https://www.cnblogs.com/zx125/p/11674649.html
Copyright © 2011-2022 走看看