专栏首页Micro_awake webjavascript(一):javascript基本介绍及基本语法

javascript(一):javascript基本介绍及基本语法

什么是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被删除,报错

运行结果:

image.png

变量提升:

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;

运行结果:

image.png

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 }

运行结果:

image.png

 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标准参考教程

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • javascript(三):对象

     对象(object)是javascript中很重要的数据类型。对象是“键值对”的集合,同时也是无序的。(注意:对象结尾处有分号) 1 var ob1={ ...

    用户1149564
  • JavaScript(五):函数(闭包,eval)

    1.函数的申明:三种方法: function命令 函数表达式:变量赋值 Function构造函数 1 //method 1: function命令 2 fu...

    用户1149564
  • javascript(二):数据类型&数值

    第一部分:数据类型 javascript数据类型通常来说是6种(ES6新增第七种Symbol类型) number:数值 string:字符串 boolean:布...

    用户1149564
  • 基于规则评分的密码强度检测算法分析及实现(JavaScript)

    用正则表达式做用户密码强度的通过性判定,过于简单粗暴,不但用户体验差,而且用户帐号安全性也差。那么如何准确评价用户密码的强度,保护用户帐号安全呢?本文分析介绍了...

    毛瑞
  • javaWeb核心技术第十四篇之easyui

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    海仔
  • 基于ThinkPHP中App(通信)接口开发封装JSON数据 并读取JSON数据的封装

    沈唁
  • PHP无锁内存nosql---Yac的实战

      最近在工作使用了yac,所以比较了下Memcache和Yac的高并发读写性能测试,发现Yac要比Memcache快很多(这里没有比较Yac和Apc的性能情况...

    sunsky
  • Redis常用方法

    我们都知道redis是key,value型就当它是内存数据库把,虽然一般常用于数据缓存,毕竟你往内存中放几千万条数据会弄爆- -(虽然我就是要这么干)  下来,...

    用户3003813
  • 9 个让 JavaScript 调试更简单的 Console 命令

    一、显示信息的命令 <!DOCTYPE html> <html> <head> <title>常用console命令</title> ...

    用户1667431
  • 【2019年8月】OCP 071认证考试最新版本的考试原题-第25题

    Which three statements are true about defining relations between tables in a rel...

    用户5892232

扫码关注云+社区

领取腾讯云代金券