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))

  • 相关阅读:
    项目进度管理-PMBook 第六章
    项目范围管理-PMBook 第五章
    PMBook 中的开发生命周期
    项目整合管理-PMBook 第四章
    PMP 学习心得
    二维码的来源和生活应用
    package main 红色波浪线
    JS中监听事件的几种方法
    PEP8规范
    RestFul API 规范
  • 原文地址:https://www.cnblogs.com/sushine1/p/11677416.html
Copyright © 2011-2022 走看看