JavaScript基础

在这里插入图片描述

写在前面

JavaScript 是一种轻量级的弱类型、基于原型的脚本语言,非面向对象语言。主要用于为界面提供动态交互。
JavaScript编写方式分为两种:

<html>
<head>
// 第一种在<head>或<body>标签中加入<script>标签编写代码
<script>...</script>
</head>
<body>
<script>...</script>
// 第二种使用外部的JavaScript,外部编写test.js文件代码
<script src="test.js"></script>
</body>
</html>

script标签一般放在body内部的最下面,因为html中可以有多个script标签,且浏览器是顺序执行,script如果执行耗时操作将影响页面加载速度。使用引入外部文件的方式引入后内部不要再写代码,如果需要写在新加一个script标签。

1.变量声明及初始化

JavaScript中使用var关键字声明所有类型变量。

    var name = 12;
    var name, age, sex;
    var name = "magic", age = "22", sex = "man";

变量命名规范

  • 由数字、下划线、字母、$符号组成,不能以数字开头
  • 遵循驼峰命名法
  • 区分大小写
  • 不能使用关键字

2.数据类型

JavaScript有6种基本数据类型:

  • number 数字类型,用来表示整数和浮点数,浮点数值的最高精度是 17 位小数
  • string 字符串类型,使用单引号或者双引号
  • boolean 布尔类型,true/false
  • null 空类型
  • undefined 未定义,声明变量未赋值的情况下为该类型
  • object 对象类型

可以通过typeof 变量名typeof (变量) 查看变量的数据类型,typeof是操作符不是函数,对未初始化的变量执行 typeof 操作符会返回 undefined 值,而对未声明
的变量执行 typeof 操作符同样也会返回 undefined 值。

    var a = 1;
    var b; // 未赋值
    var c  // 未声明
    var d = null;
    console.log(typeof a); // number
    console.log(typeof b); // undefined
    console.log(typeof c); // undefined
    console.log(typeof d); // object

number类型小数相加问题:

<script>
    var a = 0.1;
    var b = 0.2;
    console.log(a + b); // 0.30000000000000004
</script>   

正常预想的结果应该是0.3,但实际输出结果并非如此,至于原因可以移步js浮点数精度问题的前世今生?

NaN:
特殊的数值,这个数值用于表示一个本来要返回数值的操作数,NaN 与任何值都不相等,包括 NaN 本身。当一个未赋值的变量与一个数字进行算数操作时得到的结果为NaN。判断一个变量是不是NaN,需要使用isNaN(变量) 方法。

    var a;
    var b = 10;
    var c = a / b;
    console.log(c);// NaN
    console.log(c == NaN);// false
    console.log(isNaN(c));// true

3. 数据类型转换

其他类型转数字类型:
parseInt()转整型

console.log(parseInt('123'),parseInt('123.123'),parseInt('123.123a'),parseInt('a123.123'));
//123 123 123 NaN
//指定待转换字符串进制,转换为十进制,默认十进制
console.log(parseInt('123', 10)); // 123
console.log(parseInt("1010", 2)); // 10
console.log(parseInt('070', 8)); // 56
console.log(parseInt("0x70", 16));// 112

parseFloat()转浮点型

console.log(parseFloat('123'),parseFloat('123.123'),parseFloat('123.123a'),parseFloat('a123.123'));
//123 123.123 123.123 NaN
//parseFloat不支持指定进制

Nubmer()转数字

console.log(Number('123'),Number('123.123'),Number('123.123a'),Number('a123.123'));
//123 123.123 NaN NaN

通过例子可以看出,Number()转数字比parseInt()和parseFloat()更加严格,parseInt()和parseFloat()则要求首位是数字就可以转换成功。Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。

其他类型转字符串:

    var a = 10;
    var b = false;
    var c;

    console.log(a.toString());// 10
    console.log(b.toString());// false
    console.log(c.toString());// 报错
    //指定进制
    console.log(a.toString(2)); // 1010
    console.log(a.toString(8)); // 12
    console.log(a.toString(16));// a

    console.log(String(a));// 10
    console.log(String(b));// false
    console.log(String(c));// undefined

    console.log(a + "");// 10
    console.log(b + "");// false
    console.log(c + "");// undefined

其他类型转字符串有三种方法,调用 toString() 方法,使用 String() ,拼接 空字符串"",当变量未初始化的时候调用toString()会报错。

其他类型转布尔类型:
Boolen()

    console.log(Boolean(-1));//true
    console.log(Boolean(0));//false
    console.log(Boolean(1));//true
    console.log(Boolean("abc"));//true
    console.log(Boolean(""));//false
    console.log(Boolean(null));//false
    console.log(Boolean(undefined));//false
    console.log(Boolean());//false

4.运算符

运算符:

  • 算数运算符 :+、-、*、/、%取余
  • 一元运算符:++、-- 需要一个操作数
  • 二元运算符:+、-、*、/、%取余 需要两个操作数
  • 三元运算符:条件表达式?表达式1:表达式2,三元运算符需要三个操作数
  • 复合运算符:+=、-=、*=、/=、%=
  • 关系运算符:>、 <、 >=、 <=、 = =、 = = =、 !=、 !==
  • 逻辑运算符:&&、 ||、 !
    // ==、===
    var a = 1;
    var b = 1;
    var c = "1";
    console.log(a == b, a == c, a === c);
    // true true false
    //==比较的值大小是否相同,
    //===比较的值大小是否相同,并且类型是否相同

5.函数

JS中用 function 关键字来声明函数。函数不关心参数类型参数个数,比如定义了一个函数有两个形参,调用的时候可以有3个参数或更多参数,或者没参数都不会报错。原因是 JS 中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。在函数体内可以通过 arguments 对象来
访问这个参数数组,从而获取传递给函数的每一个参数。

    function test(name, age) {
        console.log(name, age);
        console.log(arguments[0], arguments[1], arguments.length)
    }

    test("magic", 20);
    //magic 20
    //magic 20 2
    test();
    //undefined undefined
    //undefined undefined 0

参考:JavaScript高级程序设计

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值