zoukankan      html  css  js  c++  java
  • JavaScript基础

      一 JavaScript 简介

      1 JavaScript基本介绍

      1 JavaScript 简称JS,是一种动态的弱类型脚本解释型语言,和HTML,CSS并成为三大WEB核心技术,得到了几乎所有主流浏览器的支持

      2 JavaScript 历史

      1994年,网景Netscape公司成立并发布了Netscape navigator浏览器,占据了很大的时长份额,网景意识到WEB需要动态,需要一种技术来实现

      1995年9月网景浏览器2发布测试版本发布了livescript,随即在12月的测试版就更名为JavaScript,同时期,微软推出IE并支持JScript,VBScript。

      1997年,网景,微软,SUN,borland公司和其他组织在ECMA确定了ECMAscript语言标准,JS则是ECMAscript的标准实现之一。

      由于IE的捆绑销售行为,网景的单一浏览器时长萎缩,从1990年的90%下降到2006年的1%,1999年网景被AOL收购,收购不就,netspace公开了浏览器代码,并创建了Mozilla组织,Mozilla组织使用Gelo引擎重写浏览器,当然Mozilla将Geko引擎发布了Firefox浏览器

      2003年5月,网景被解散

      AOL于2007年宣布停止支持Netscape浏览器

      3 网景的技术

      HTTP cookie ,解决HTTP无状态

      JavaScript

      ssl协议

      jar 格式文件,将Java的class文件打包,并加上签名

      2012年4月9日,微软以10亿5千6百万购买800向美国在线的专利或专利授权,并收购了SSL,cookie等专利。

      4 ES

      ES,ECMAScript是由ECMA国际(前身为欧洲计算机制造协会,英文名称是European Computer Manufactures Association)通过ECMA-262标准化的脚本程序设计语言,该语言被广泛应用于互联网

      JavaScript是商品名,目前商标权在Oracle公司手中,ES是标准名。

      根据ES标准,有很多实现引擎,其中包括JavaScript或JScript,他们都是ECMA-262标准的实现和扩展。

      1997年,制定了首个ECMA-262

      1999年12月,EC3,支持更强大的正则表达式

      ES4 太过激进,最终被放弃

      2009年,ES5发布,得到广泛支持,支持严格模式,支持Json

      2015年,ES6发布,引入非常多的新的语言特性,还兼容旧版本的特性,ES6之前按照版本号命名,从ES6开始使用年份作为版本号,ES6 及ECMAscript 2015.

      5 之前浏览器中兼容问题

      运行HTML,CSS,JS技术都在发展,标准版本很多,浏览器内嵌的引擎实现不太一致,甚至有不按照标准实现,或者减少实现,或者改变实现,或者增加的功能,如IE,就导致了开发人员负担,很难做到一套代码可以兼容的跑在多种浏览器中,甚至不能跑在同一种浏览器的不同版本中。

      6 V8 引擎

      就在浏览器IE一家独大时,Firefox和Chrome开始变强

      2008年9月2日,Google的Chrome浏览器发布,一并发布的js引擎,就是V8引擎,V8使用BSD协议开源

      V8引擎支持C++开发,将JavaScript编译成了机器码,而不是字节码,还是用很多优化方式提高性能,因此,V8引擎速度很快。

      V8 引擎还可以独立运行,可以嵌入到其他任何C++程序中。

      V8 引擎的诞生,使得服务器端运行JS称为了方便的事情。

      7 Nodejs

      nodejs是服务器端运行JavaScript的开源的,跨平台的运行环境

      nodejs原始作者瑞安达尔于2009年发布,使用了V8引擎,并采用事件驱动,非阻塞异步IO模型

      2010年,npm软件包管理器诞生,通过它,可以方便的发布,分析nodejs的库和源代码。

      nodejs4.0引入了ES6的语言特性。

      8 安装组件

      需要安装nodejs和visual studio code

      相关下载

      nodejs

      https://npm.taobao.org/mirrors/node/v12.10.0/node-v12.10.0-x64.msi

      visual studio code

      https://vscode.cdn.azure.cn/stable/b37e54c98e1a74ba89e03073e5a3761284e3ffb0/VSCodeUserSetup-x64-1.38.1.exe

      插件NodeExec和汉化包安装

      重新启动软件即可生效,

      二 JavaScript基础

      1 注释,常量,变量

      1 注释

      和C 、Java一样

      //单行注释

      /*注释*/多行注释,也可以使用在语句中

      注: 使用快捷键F8运行代码,其代码必须是已经保存的文件,不能是空,F8可能和有道词典快捷键冲突,建议在此运行期间不运行有道词典。

      2 常量和变量

      1 标识符

      标识符必须是字母,下滑线,美元符号和数字,但必须是字母,下划线,美元符号开头,依然不能是数字开头

      标识符区分大小写

      2 标识符的声明

      var 声明一个变量

      let 声明一个块作用域中的局部变量

      const 声明一个常量

      JS中的变量声明和初始化时可以分开的

      常量的存放位置和变量是不在一起的

      console.log(a) // 后面声明的变量,前面可以使用,但没意义

      var a //只是声明,并未赋值,其类型是undefined,

      let b //声明为块变量

      console.log(1,a,b) //打印

      a=1 //变量赋值,不规范化操作,不推荐,在严格模式下回导致异常。在赋值之前不能引用,因为未为进行声明,其赋值的结果是全局作用域

      b='123'

      console.log(2,a,b)

      const c=100 //定义常量

      console.log(c)

      var d=10 //规范声明并初始化

      console.log(3,d)

      c=200 //修改常量值,不可修改,因为其是常量

      console.log(4,c)

      结果如下

      常量和变量的选择

      如果明确知道一个标识符定以后便不再改变,应该尽量声明成const常量,减少被修改的风险,减少bug。

      3 函数对作用域的控制

      function test(){

      var x=10; //声明并初始化x

      y=20; //声明vi能够初始化y

      console.log(x,y)

      } 郑州男科医院:http://mobile.tongji120.com/郑州男科医院哪家好:http://mobile.tongji120.com/郑州同济做包皮手术多少钱:http://mobile.tongji120.com/

      test()

      console.log(x,y) //此处在函数中,其所有参数皆不能冲破作用域

      // x=100

      // console.log(x)

      结果如下

      函数本身天生就是一个作用域

      4 提升作用域

      其实就是将声明定义到最前面罢了,及就是先调用,再定义

      console.log(a)

      console.log(b)

      console.log(c)

      console.log(d)

      console.log(e)

      var a=200; // 提升作用域,只有var定义变量的方式可以提升作用域

      var b;

      const c=300; //此处不能提升作用域

      let d;

      e=300;

      结果如下

      2 数据类型

      1 基本数据类型介绍

      序号名称说明

      1number数值型,包括整数类型和浮点型

      2boolean布尔型,true和false

      3string字符串

      4null只有一个值null

      5undefined变量声明未赋值的,对象未定义的属性

      6symbolES6新引入的类型

      7object类型是以上基本类型的复合类型,是容器

      ES是动态语言,弱类型语言

      虽然先声明了变量,但是变量可以重新赋值成任何类型

      2 类型转换

      1 字符串类型转换

      console.log(a=1+'test',typeof(a)) // typeof:打印类型

      console.log(a=false+'test',typeof(a)) //和布尔类型运算

      console.log(a=null+'test',typeof(a)) //和null比较

      console.log(a=true+'test',typeof(a))

      console.log(a=undefined+'test',typeof(a)) //和数字

      结果如下

      2 数字类型转换

      console.log(a=1+false,typeof(a))

      console.log(a=1+true,typeof(a))

      console.log(a=1+null,typeof(a))

      console.log(a=1+undefined,typeof(a))

      结果如下

      3 布尔类型转换相关

      console.log(a=false+undefined,typeof(a))

      console.log(a=true+undefined,typeof(a))

      console.log(a=false+null,typeof(a))

      console.log(a=true+null,typeof(a))

      console.log(a=true & '',typeof(a)) //位运算

      console.log(a=undefined && true,typeof(a)) //与运算

      4 短路

      True是透明的,false则直接就是短路,返回直接就是false,类型是布尔。true主要是看后面的情况

      console.log(a=false && null,typeof(a)) //如果前面是false,则返回结果是false,且类型是布尔类型

      console.log(a=false && 'zhangbing',typeof(a))

      console.log(a=true && '32534534',typeof(a)) //如果前面是true,则以后面为准

      console.log(a=true && '' ,typeof(a))

  • 相关阅读:
    LeetCode Missing Number (简单题)
    LeetCode Valid Anagram (简单题)
    LeetCode Single Number III (xor)
    LeetCode Best Time to Buy and Sell Stock II (简单题)
    LeetCode Move Zeroes (简单题)
    LeetCode Add Digits (规律题)
    DependencyProperty深入浅出
    SQL Server存储机制二
    WPF自定义RoutedEvent事件示例代码
    ViewModel命令ICommand对象定义
  • 原文地址:https://www.cnblogs.com/sushine1/p/11677416.html
Copyright © 2011-2022 走看看