什么是javascript?

javascript是一种直译型脚本语言,是一种动态类型、弱类型、基于原型的语言。(所谓“脚本语言”:指的是它不具有开发操作系统的能力,只是用来编写大型运用程序的脚本!)

javascript本身不提供任何与I/O(输入输出)相关的API,都是靠宿主环境提供!

常见的宿主环境:1.浏览器;  2.服务器,即Node项目。

宿主环境是浏览器,提供的额外API主要是三类:1.浏览器控制类(操作浏览器);2.DOM类(操作网页的元素);3.web类(实现互联网功能)

如果宿主环境是Node,提供的API:文件操作API;网络通信API等等。

javascript历史:

javascript与国际标准化组织ECMA(European Computer Manufaturers Association)的关系:

总结就是:ECMAScript是javascript的规格、标准;javascript是ECMA的实现!

ECMAScript只是用来标准化javascript这门语言的基本语法结构,与部署环境相关的标准是由其它标准规定,如DOM的标准由W3C制定!

ECMAScript的发布:

2009年12月,ECMAScript 5.0发布;

2011年6月,ECMAScript 5.1发布;

2015年6月,ECMAScript 6发布,并更名为“ECMAScript 2015”

更多有关javascript历史,可参考阮一峰教程

相关周边大事记:可参考

javascript变量:

  1. 1+1;//没有意义,不报错
  2. ;;;//空语句,不报错
  3. var a=1;//建议总是使用var 来申明变量!
  4. b=1;//总是创建了全局变量
  5. // console.log(a+" "+b);
  6. console.log(a,b);
  7. delete a;//delete无效
  8. delete b;//删除成功
  9. console.log(a);
  10. console.log(b);//此时b被删除,报错

运行结果:

变量提升:

javascript引擎的工作原理:先解析代码,获取所有被申明的变量,然后再一行一行运行。

这样造成的结果是:所有变量的申明语句,都会被提升到代码的头部。这种原理叫变量提升(hoisting)

  1. //相当于var c; console.log(c); c=1;
  2. console.log(c);
  3. var c=1;
  4.  
  5. console.log(d);
  6. d=10;

运行结果:

undefined:表示变量c已经申明,但是未被赋值

d is not definded:表示变量d没有申明。(d不是var命令申明的,javascript引擎不会将其提升!)

注释:

单行注释://

多行注释:/* */

历史上,由于javascript兼容html代码注释,所以<!---->也被视为单行注释(个人不推荐这种写法!)

  1. <!-- 这里可以写注释内容
  2. --> 这里可以写注释内容,注释符号必须在行首!否则会报错,或被当成运算符
  3. var e=1;
  4. if(e -->0){//相当于e-- >0
  5. console.log(e);//输出0
  6. }

区块:

使用大括号包括起来的语句,就是block(区块)。

注意:javascript区块不构成单独的作用域(scope)。即区块中的变量与区块外的变量,属于同一个作用域!(C++等语言出现这种情况会报错!)

  1. for(var i=0;i<5;i++){
  2. console.log(i);
  3. }
  4. console.log(i);//输出5

switch:(使用严格相等运算符===比较!)

  1. var x=1;
  2. switch (x) {
  3. case true:
  4. console.log('first step');
  5. break;
  6. case false:
  7. console.log('second step');
  8. default:
  9. console.log('switch 中使用的是===严格相等运算符');
  10. break;
  11. }

运行结果:

 break和continue语句:(默认只针对一层循环!)(循环指的是while和for循环等)

break:跳出循环!

continue:立即终止本轮循环,返回循环结构头部,开始下一轮循环!

  1. var z=10;
  2. while(z<=10){
  3. z--;
  4. if(z===9){
  5. continue;//跳转到z--
  6. }else{
  7. console.log(z);
  8. }
  9. if(z===8){
  10. console.log(z);
  11. break;//跳转到while外面
  12. }
  13. }

标签:javascript语句前面可以有标签(label),相当于定位符,用于跳转到相应位置。

  1. abc://可随意起名,不需加引号
  2. for(j=0;j<3;j++){
  3. for(k=0;k<=j;k++){
  4. if(k===j && k===1)
  5. break abc;//跳出了这两层循环!
  6. else
  7. console.log(j+" "+k);
  8. }
  9. }

同理:continue后面也可加标签!满足条件时,跳过当前循环,进入下一轮外层循环;如果continue后面不加标签,则只能进入下一层内层循环

本文参考链接:阮一峰javascript标准参考教程

javascript(一):javascript基本介绍及基本语法的更多相关文章

  1. JavaScript (一) js的介绍及基本语法变量

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.JS 的 介绍 1.JavaScript :简称 : js js 分为三个部分: 1. ECMASc ...

  2. JavaScript function函数种类介绍

    JavaScript function函数种类介绍 本篇主要介绍普通函数.匿名函数.闭包函数 1.普通函数介绍 1.1 示例 ? 1 2 3 function ShowName(name) {     ...

  3. 教你如何在 Javascript 文件里使用 .Net MVC Razor 语法

    摘录 文章主要是介绍了通过一个第三方类库RazorJS,实现Javascript 文件里使用 .Net MVC Razor 语法,很巧妙,推荐给大家 相信大家都试过在一个 View 里嵌套使用 jav ...

  4. JavaScript压缩工具JSA使用介绍

    JavaScript压缩工具JSA使用介绍 JSA绝对是我使用过的JS压缩工具中最上乘的一个.认识它是从ligerUI开始.在ligerUI的QQ讨论组里,大神--ligerUI的作者告诉我他的lig ...

  5. JavaScript语言精髓(1)之语法概要拾遗(转)

    JavaScript语言精髓(1)之语法概要拾遗   逻辑运算 JavaScript中支持两种逻辑运算,“逻辑或(||)”和“逻辑与(&&)”,他们的使用方法与基本的布尔运算一致: v ...

  6. JavaScript中if语句优化和部分语法糖小技巧推荐

    前言 在前端日常开发过程中,if else判断语句使用的次数应该是比较频繁的了,一些较为复杂的场景,可能会用到很多判断,在某个代码块使用很多if else时,代码会显得较为冗余,阅读起来不够清晰. 除 ...

  7. 关于sass的介绍和基本语法

    引入 什么是sass?sass是css预处理器. 那预处理器又是什么?css本身不是一种编程语言,而预处理器是用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件. 如今主流的预处理器 ...

  8. 《编写可维护的JavaScript》——JavaScript编码规范(五)

    语句和表达式 在JavaScript中,诸如if和for之类的语句有两种写法,使用花括号的多行代码或者不使用花括号的单行代码.比如: //不好的写法,尽管这是合法的JavaScript代码 if (c ...

  9. JavaScript 对象JavaScript 对象

    JavaScript 中的所有事物都是对象:字符串.数值.数组.函数... 此外,JavaScript 允许自定义对象. 所有事物都是对象 JavaScript 提供多个内建对象,比如 String. ...

随机推荐

  1. LeetCode 476 Number Complement 解题报告

    题目要求 Given a positive integer, output its complement number. The complement strategy is to flip the ...

  2. scala-高阶函数

    //1类似于lambda表达式的函数直接量====================== var get = (name: String) => { println(123 + name) } g ...

  3. activemq安装使用教程

    一.下载安装 下载地址:http://activemq.apache.org/activemq-5158-release.html 然后解压即可,apache的东西解压后就可以使用了. 二.启动 在安 ...

  4. 第二章 深入C#数据类型

    深入C#数据类型       巧记:值(无ref)+值=不变 值(无ref)+引=变     引(有ref)+值/引=变     1.值类型和引用类型 1.引用类型 源于system.object家族 ...

  5. python-面向对象-12_模块和包

    模块和包 目标 模块 包 发布模块 01. 模块 1.1 模块的概念 模块是 Python 程序架构的一个核心概念 每一个以扩展名 py 结尾的 Python 源代码文件都是一个 模块 模块名 同样也 ...

  6. Centos6.5+Redmine

    花了两天时间,基于centos6.5操作系统,搭建了redmine环境,在这里记录下过程中遇到的问题以及搭建流程. centos6.5; redmine2.5.0; Ruby1.9.3; step 1 ...

  7. QGL登陆wui 提示not possible

    1: sap 登陆 QGL系统,  提示 2: 需要到该系统下,使用 T-CODE  su01 或者  su3  对LIHANS1 用户角色进行修改. 3:su53  查询 自己操作的 历史纪录和 状 ...

  8. Spark SQL读写方法

    一.DataFrame:有列名的RDD 首先,我们知道SparkSQL的目的是用sql语句去操作RDD,和Hive类似.SparkSQL的核心结构是DataFrame,如果我们知道RDD里面的字段,也 ...

  9. 异常Exception分类

    1:编译时被检测异常:只要有是Exception和其子类都是,除了特殊子类RuntimeException体系.       这种问题已但出现,希望在编译时进行检测,让这种问题有对应处理方式      ...

  10. (转)Mysql LIMIT如何正确对其进行优化

    以下的文章主要是对Mysql LIMIT简单介绍,我们大家都知道LIMIT子句一般是用来限制SELECT语句返回的实际行数.LIMIT取1个或是2个数字参数,如果给定的是2个参数,第一个指定要返回的第 ...