JavaScript学习整理(二)-------js基础篇积累

JS核心概念与特性
本文深入探讨JavaScript的发展历程,对比Java,介绍其在各领域的应用,包括node.js、物联网及游戏开发等。详解JavaScript在浏览器与服务端的执行机制,讨论V8、SpiderMonkey等引擎的工作原理。此外,对比var与let,讲解变量与常量的使用,以及数据类型、类型转换和运算符的细节。

(一)js发展和简介
1.js和Java

  • JavaScript是一种运行在客户端 的弱类型脚本语言 ,是一种解释性动态类型的基于对象的语言。
    执行过程:一边解释一边执行
  • Java是服务端的编程语言,强类型语言。
    执行过程:x.java-先编译产生x.class(字节码文件)-在执行字节码文件。

2.使用

  • 应用场景:node.js、APP、puff(物联网)、游戏开发等等。

  • 执行:JavaScript 不仅仅是在浏览器内执行,也可以在服务端执行,甚至还能在任意搭载了 JavaScript 引擎 的设备中都可以执行。
    浏览器中嵌入了 JavaScript 引擎,有时也称作 JavaScript 虚拟机。

  • 不同的引擎有不同的“代号”,例如:
    V8 – Chrome 和 Opera 中的 JavaScript 引擎。
    SpiderMonkey – Firefox 中的 JavaScript 引擎。
    还有其他一些代号,像“Trident”,“Chakra”用于不同版本的 IE,“ChakraCore”用于 Microsoft Edge,“Nitro”和“SquirrelFish”用于 Safari 等等。
    上面这些名称很容易记忆,因为经常出现在网上开发者的文章中。我们也会用到这些名称。例如:某个新的功能,如果 JavaScript 引擎 V8 是支持的,那么我们可以认为这个功能大概能在 Chrome 和 Opera 中正常运行。

  • 引擎是如何工作的?引擎很复杂,但是基本原理很简单。引擎(通常嵌入在浏览器中)读取(“解析”)脚本。然后将脚本转化(“编译”)为机器语言。然后这机器语言代码快速地运行。引擎会对流程中的每个阶段都进行优化。它甚至可以在运行时监视编译的脚本,分析数据流并根据这些对机器代码应用优化。最后,脚本会执行地非常快。
    3.组成
    在这里插入图片描述
    4.书写

  • 外部脚本:简单的可以直接写在HTML合适的位置,复杂的写在文件中,使用独立文件。优点:浏览器会下载它,然后将它保存在浏览器的缓存中。之后,浏览器需要相同的脚本就可以从缓存中获取,而不是下载它。则文件实际上下载一次,可节省流量,加载更快。
    对于写了src的script标签将不能在其中书写脚本语言,因为这种会忽略内布包裹代码,不能写在一起。
    <script src="js/search.js"></script>
    代码结构是可以省略分号的,但是最好不要这样做。
    5.变量和常量
    - var和let区别:
    1.let声明的变量只在其声明的块或子块中可用,这一点,与var相似。二者之间最主要的区别在于var声明的变量的作用域是整个封闭函数

     	function varTest() {
     	  var x = 1;
     	  if (true) {
     	    var x = 2;  // 同样的变量!
     	    console.log(x);  // 2
     	  }
     	  console.log(x);  // 2
     	}
     	
     	function letTest() {
     	  let x = 1;
     	  if (true) {
     	    let x = 2;  // 不同的变量
     	    console.log(x);  // 2
    

    2.在程序或者函数的顶层,let并不会像var一样在全局对象上创造一个属性,比如:

    var x = 'global';
    let y = 'global';
    console.log(this.x); // "global"
    console.log(this.y); // undefined
    

    3.let 被创建在包含该声明的(块)作用域顶部,一般被称为“提升”。与通过 var 声明的有初始化值 undefined 的变量不同,通过 let 声明的变量直到它们的定义被执行时才初始化。在变量初始化前访问该变量会导致 ReferenceError。该变量处在一个自块顶部到初始化处理的“暂存死区”中。

     function do_something() {
       console.log(bar); // undefined
       console.log(foo); // ReferenceError
       var bar = 1;
       let foo = 2;
     }
    

    4.let不允许在相同作用域内,重复声明同一个变量。否则报错。
    5.let非常适合用于 for循环内部的块级作用域。JS中的for循环体比较特殊,每次执行都是一个全新的独立的块作用域,用let声明的变量传入到 for循环体的作用域后,不会发生改变,不受外界的影响。

        for (var i = 0; i <10; i++) {  
          setTimeout(function() {  
            console.log(i);     
          }, 0);
        }//输出10
        for (let i = 0; i < 10; i++) { 
          setTimeout(function() {
            console.log(i);    //  i 是循环体内局部作用域,不受外界影响。
          }, 0);
        }//输出0 1 2 3 4 5 6 7 8 9
    

    具体参考网址(如有侵权立即删除 https://www.cnblogs.com/fly_dragon/p/8669057.html
    常量:
    cont无法被二次修改。
    命名:尽量驼峰式,规范命名。

    6.数据类型

  • 数据类型: 7 种原始类型:Boolean Null Undefined Number BigInt String Symbol 和 Object。(具体情况可以去w3cschool查看)
    BigInt -任意精度整数。(这个才知道添加了)V8引擎v6.7 默认启用对 BigInt 的支持。
    Number是双精度浮点数,它可以表示的最大安全范围是正负9007199254740991,也就是2的53次方减一,现在比9007199254740992大的所有数字可以使用BigInt表达。
    语法:
    BigInt(value) || 数字后面加n;
    可以是字符串或者整数,注意, BigInt()不是构造函数,因此不能使用new操作符。

    10n === BigInt(10); // true
    
    10n == 10; // true
    

    symbol 用于唯一的标识符。
    typeof 运算符可以查看变量的类型。
    两种形式:typeof x 或者 typeof(x)。
    返回的类型的字符串,比如 “string”。
    null 返回 “object” —— 这是语言中的一个错误,实际上它并不是一个对象

  • 类型转换
    转换成字符串类型: num=num+"" 、ToString()、String()、input输入框得到的值都是字符串string类型;
    转换成数值类型: Number()、parseInt()-(这个会存在取整情况,不四舍五入)、parseFloat()–转换成浮点类型、使用加减0运算会转换成数值。
    使用isNuN()可以判断是否为数字,true为非数值,false为数值。

  • 运算符(主要识别i++和++i)

    如果发现错误请及时告知谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值