JavaScript基础知识介绍

JavaScript基础语法知识介绍

重新系统开始系统学习JavaScript, 如果笔记中有错误的地方,望提出。

1、概况

  • JavaScript是解释型语句,不用编译,写完了就可以直接运行。
  • JavaScript包含三个部分,ECMAScript、DOM和BOM。ECMAScript是js的标准,DOM是文档操作对象,BOM是浏览器操作对象。
  • 一个网页就是一个文档,document是文档对象,使用在script标签中编写js语句,type属性为text/javascript。

2、JavaScript代码的位置

  • 在标签的属性中

    <button onclick="alert('点到我了')">点我一下</button>
    
  • 在a标签的href中

    <a href="javascript:alert('又是你');">点我两下</a>
    <a href="javascript:;">我是没反应的a标签</a>
    <!-- 
    	写在a标签中的href属性中,a标签不跳转。
    	我们经常使用href:"javascript:;"让a标签不跳转
    -->
    
  • 在script标签中

    <script type="text/javascript">
    	// 代码写在这里
    	alert("不要再点我了");
    </script>
    
  • 使用script引入外部文件

    <script src="js/01script.js"></script>
    

3、JavaScript数据类型

3.1 字面量和变量
  • 字面量

    字面量是不可变的值,常量,比如1 2 3 4 ,都是可以直接使用的。但是我们很少直接使用字面量。

  • 变量

    变量是可以改变的,可以用来保存字面量的值,比如x=123。在js中使用var关键字来声明变量。

3.2 标识符

在JS中所有由我们自主命名的都可以是标识符,比如变量名、函数名、属性名等等。使用标识符需要使用以下规则:

  • 标识符中可以含有字母、数字、_ 、$;
  • 标识符不能使用数字开头;
  • 标识符不能使用功能ECMAScript的关键字和保留字;
  • 标识符一般使用驼峰命名法,首字母小写,每个单词的开头字母都大写,其余小写,比如hibernateTest

在JS底层保存标识符实际上采用的是Unicode编码,所以所有的utf-8含有的内容也可以作为标识符,中文也可以作为标识符,但是我们一般都不会使用的。

3.3 数据类型

数据类型指的是字面量的类型,JS中包含有String(字符串)、Number(数字)、Boolean(布尔类型)、NULL(空值)、Undefined(未定义)、Object(对象)六种类型。其中前面五种属于基本数据类型,最后一种属于引用数据类型。

我们使用typeof 来检查一个变量的数据类型。

var a = "1233";
console.log(typeof a);
3.4 String字符串
  • 使用单引号或者双引号包含字符串,比如var str = “string”; 只能在双引号中放单引号。
  • 使用转义字符进行转化,\n 表示换行
3.5 Number数值

数值类型包括整数和浮点数,不区分int和double 以及 float,就只是Number类型的。Number中有MAX_VALUE属性,表示js能表示的最大值。

其中有两个特殊的值,一个Infinity,表示超出了js表示的最大值之后的字面量;一个是NaN,表示not a number ,例如使用document.write(“abc” * “bcd”); 返回的结果就是NAN。

使用js可以完成基本的算术运算。浮点数运算可能不会很精确。

3.6 Boolean值

用来进行逻辑判断,只有true和false值,很简单的进行判断真和假。

3.7 Null值

专门用来表示一个空的对象,注意使用typeof检查的时候返回的是一个Object对象

3.8 Undefined值

当声明一个变量,当并不给变量赋值的时候,就是undefined。使用typeof返回的是undefined。

3.9 强制类型转化

将一个类型强制转化为其他数据类型,一般都是讲其他数据类型转化为String Number Boolean类型。

  • 转化成String

    • 方式一:调用被转化类型的tostring方法,该方法不会影响原变量,但是会返回的结果会是String类型。但是null和undefined这两种数据类型没有toString方法。
    • 方式二:调用String()函数,所有的数据类型都可以使用String()转化成String类型,将要改变的值放入到String函数的参数里面。
  • 转化成Number

    • 方式一:使用Number()函数。存在以下三种情况:

      1)如果是纯数字的字符串,就直接转化成数字

      2)如果字符串中有非数字的内容,则转化为NaN

      3)如果字符串是一个空格或者很多个空格,那么转化成0

      4)如果是布尔类型转换成数值,true是1,false是0

      5)如果是NUll转换成数值,就是0

    • 方式二:只适用于字符串转换成数值类,调用parseInt函数

      parseInt()可以将一个字符串里面的有效的整数内容取出来,然后转换成Number类型。

      对应的,适用parseFloat() 取出字符串里面有效的浮点数

    // 得到的结果是123
    var c = "1223pc";
    var cc = parseInt(c);
    document.write(cc);
    
    //得到的结果是123456
    var d = "123456.326";
    console.log(parseInt(d));
    
  • 转化成Boolean类型

    使用Boolean()函数就可以了,除了0和NaN、空串、null和undefined,转化之后都是false之外,其他的都是true。另外还有一个隐式转换,为任意数字做两次非运算,就可以转化为布尔值。

3.10 运算符
  • 算术运算符:使用±*/进行运算,其中当对非Number类型的进行运算时,会先将他们转换成Number类型之后再运算。需要注意的是,当使用+号对两个字符串进行运算,会得到两个字符串的拼接,不会转换成Number类型。任何值和字符串相加都会转换成字符串。

  • 自增自减:++ --,以下自增自减都一样的。

    • a++ 和 ++a的区别:这两个都是表达式,他们都会让a加1,但是不同的是,a++是a自增前的值,++a是a自增后的值。

      var a = 1;
      // a++的值是1
      // console.log(a++);
      // console.log("a:" + a);
      
      // ++a的值是2
      console.log(++a);
      console.log("a:" + a);
      
    • 一个小测试

      var d = 20;
      var result = d++ + ++d + d;
      //d++是20,但是此时的d已经是21,所以++d是22了,此时的d也是22啊,所以得到result的值是64
      
  • 逻辑运算符

    使用!、&&、|| 进行取反、和、或 进行逻辑操作。需要注意的是js中的&&和||都是短路的,如果判断第一个条件可以确定真假就不会判断第二个值了。

    当非布尔值进行逻辑与运算的时候,会先将其转换为布尔值,然后再运算,并且返回其原值。

    • 如果两个值都是true,则返回后面的值
    • 如果两个中有一个是false,则返回前面的false值
    //返回的是2
    var e = 1 && 2;
    console.log("e::"+ e);
    

    当非布尔值进行逻辑或运算的时候,如果第一个值是true,则直接返回第一个值;如果第一个值是false,则返回第二个值。

  • 赋值运算符

    其实就是+=、-=、*=之类的运算,比如a+=5 相当于 a = a + 5;

  • 关系运算符

    使用大于等于小于等于这些符号进行运算,但是任何值跟NaN比较都是false;比较两个字符串的时候,比较的是他们的字符编码,如果有多位就一位一位进行比较;比较字符串类型的数字一定要转型,不要结果可能不会是我们想象的。

  • 条件运算符(三元运算符)

    条件表达式?语句1:语句2。执行过程:先执行条件表达式,如果该值为true,则执行语句1,并返回执行结果;如果为false,则执行语句2,并返回执行结果。

4、流程控制语句

4.1 条件判断语句(if语句)

if(表达式){ 语句1;语句2;} 如果表达式为真,执行括号里面的语句。跟else 和 else if 配合使用,进行条件判断。

4.2条件分支语句(switch语句)
/**
* switch(表达式){
*  case 表达式1 : 
*                  语句1 ;
*                  break;
*  case 表达式2 : 
*                  语句2 ;
*                  break;
*  default :
*                  语句3;
*                  break;
* }
* 
* 在执行时会将case后面的表达式以及switch后面的表达式依次进行比较
* default就是上面的case表达式都没有匹配的时候,使用default,然后break退出
* 
* 
* */

var num = 1;
switch(num){
    case 1: alert("我是1"); break;
    case 2: alert("我是2"); break;
    case 3: alert("我是3"); break;
    default : break;
};
        
4.3 循环控制语句(while语句)
while(条件表达式){
    //当条件为true的时候,执行语句;
	语句;
}

do{
    语句;
} while(表达式)
//先执行语句,在进行判断,如果条件为true,则继续循环,否则退出。
4.4 循环控制语句(for语句)
for(初始化表达式; 条件表达式; 更新表达式){
    语句;
}
//初始化表达式只执行一次
for(var i = 0; i < 10; i++){
    alert(i);
}
4.5 break和continue关键字

break:跳转循环,全部跳出;

continue:跳转当前循环,进行下一次循环;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值