JavaScript学习笔记(1)-- 数据类型与运算符

  • JavaScript包括:

        ECMAScript:JavaScript标准

        DOM:文档对象模型

        BOM:浏览器对象模型

  • 特点:

        解释型语言,无需编译,直接运行。

        类似于C和Java的语法结构。

        动态语言。

        基于原型的面向对象。

  • 初识js

js代码需要编写到script标签中。<script type = "text/javascript" />

demo:

alert("你好!")    //弹出框
document.write("我的第一个js代码");   //向body中写内容
console.log("打印控制台");     //打印控制台
  • 标识符

1、可以含有字母、数字 、下划线、$

2、标识符不能以数字开头

3、标识符不能是JS中的关键字或保留字

4、标识符一般采用驼峰命名法,首字母小写,其余每个单词开头字母大写

JS底层保存标识符采用Unicode编码:utf-8,理论上讲,所有utf-8中含有的内容都可以作为标识符。

  • 数据类型

JS中一共六种数据类型:

String (字符串)、Number(数值)、Boolean(布尔值)、Null(空值)、Undefined(未定义)、Object(对象)

其中String、Number、Boolean、Null、Undefined属于基本数据类型,而Object属于引用数据类型。

1、String

字符串需要放在 引号中,不加 引号会变成变量。

使用单引号和双引号都可以。

单双引号不能嵌套。

2、Number

在JS中所有的数值都是Number类型

包括整数和浮点数(小数)

Js中可以表示的数字的最大值:Numbe.MAX.VALUE,如果超过最大值,返回Infinity(无穷),

-Infinity表示负无穷

NaN是特殊数字(非法),表示Not a Number,但使用typeOf检查NaN会返回Number

可以使用运算符 typeOf来检查一个变量的类型:

        typeOf 变量

在JS中整数的运算基本可以保证精确,如果进行浮点数计算,可能得到一个不精确的结果,所以不要使用JS进行精确度较高的计算,例如计算金额

3、Null

var a = null;
console.log(typeof a)   // Object a是Object类型

4、Undefined (未定义)

var a;    //声明但未赋初值
console.log(typeof a) //undefined  a是Undefined类型
  • 强制类型转换

指将一个数据类型强制转换为其他的数据类型。

1.转换为String类型

方法一:调用被转换类型的toString()方法,该方法不会影响到原变量

var num = 520;

//将num强制转换为字符串类型

num.toString();
console.log(typeof num);  //number  

var res = num.toString();
console.log(typeof res);     //String

num = num.toString();
console.log(typeof num);  //String

注意:toString方法不适用于值为null和undefined的方法,如果误用则报错。

方法二:调用String()函数,并将被转换的数据作为参数的传递函数。null和undefined也适用

var love = 520;
var l = String(love);
console.log(typeof love);    //number
console.log(typeof l);    //String

love = null;
love = String(love);
console.log(typeof love);    //String
console.log(love);       // "null"

love = undefined;
love = String(love);
console.log(typeof love);    //String
console.log(love);         // "undefined"

2、转为Number类型

方法一:使用Number()函数

var love = "520";

var l = Number(love);
console.log(typeof l);    //string
console.log(typeof love);    //Number
console.log(love);     // 520

love = "you"
love = Number(love);
console.log(typeof love);    //Number
console.log(love);     // NaN

love = "2you"
love = Number(love);
console.log(typeof love);    //Number
console.log(love);     // NaN

love = ""
love = Number(love);
console.log(typeof love);    //Number
console.log(love);     // 0

love = true
love = Number(love);
console.log(typeof love);    //Number
console.log(love);     // 1
love = true
console.log(love);     // 0

love = null
love = Number(love);
console.log(typeof love);    //Number
console.log(love);     // 0

love = undefined
love = Number(love);
console.log(typeof love);    //Number
console.log(love);     // NaN

如果是纯数字的字符串,直接转换为数字;

如果是含有非数字的字符串,则转换为NaN;

如果字符串为空或者空格,则转换为 0;

布尔值转数字类型,true为1;false为0

null转数字为0;

undefined转数字为NaN;

方法二:针对字符串,从左向右取出字符串中的数字,遇到非数字停止。

parseInt()方法,转换成整数;

parseFloat(),把一个字符串转换成一个浮点数;

var num = "520px";

num = parseInt(num);
console.log(typeof num);    // number
console.log(num);    //520

num = "520you1314";
num = parseInt(num);
console.log(typeof num);    // number
console.log(num);    //520

num = "you1314";
num = parseInt(num);
console.log(typeof num);    // number
console.log(num);    //NaN

num = "520.1314";
num = parseInt(num);
console.log(typeof num);    // number
console.log(num);    //520

num = "520.1314";
num = parseInt(num);
console.log(typeof num);    // number
console.log(num);    //520

num = "520.1314you";
num = parseFloat(num);
console.log(typeof num);    // number
console.log(num);    //520.1314

num = true;
num = parseFloat(num);
console.log(typeof num);    // number
console.log(num);    // NaN

注意:

①如果将一个非String类型的变量使用parseaInt()或parseFloat(),它会先将其转换为String,然后再转换为Number。

②可以在parseInt()和parseFloat()中传第二个参数,指定进制;

        例:parseInt(100,2)   // 4

3、转换为Boolean

使用Boolean()函数。

数字类型转布尔,除了0和NaN,其余结果都是true;

字符串转布尔,除了空串,其余都是true;

null和undefined转布尔都是false;

对象也会转换为true。

var love = 520;

love = Boolean(love);
console.log(typeOf love);    //boolean
console.log(love);    //true

love = 0;
love = Boolean(love);
console.log(typeOf love);    //boolean
console.log(love);    //false

love = Infinity;
love = Boolean(love);
console.log(typeOf love);    //boolean
console.log(love);    //true

love = NaN;
love = Boolean(love);
console.log(typeOf love);    //boolean
console.log(love);    //false

love = "you";
love = Boolean(love);
console.log(typeOf love);    //boolean
console.log(love);    //true

love = "爱你";
love = Boolean(love);
console.log(typeOf love);    //boolean
console.log(love);    //false

love = " ";
love = Boolean(love);
console.log(typeOf love);    //boolean
console.log(love);    //true
love = "";
console.log(love);    //false

love = null;
love = Boolean(love);
console.log(typeOf love);    //boolean
console.log(love);    //false

love = undefined;
love = Boolean(love);
console.log(typeOf love);    //boolean
console.log(love);    //false
  • 其他进制的数字

在JS中,

表示十六进制,需要以0x开头;

表示八进制,用0开头;

二进制以0b开头。

有的浏览器不支持。

var num = 0x10;  
console.log(num);    // 16 转换为10进制输出

num = 010;  
console.log(num);    // 8 

num = 0b10;  
console.log(num);    // 2

  • 算数运算符

1、typeof 返回值是字符串

2、算术运算符

当对非number类型的值进行运算时,会将这些值转换为Number然后运算。

var res = true + 1;
cnsole.log(res);    // 2

res = true + false;
cnsole.log(res);    // 1

res = 1 + null;
cnsole.log(res);    // 1

res = 1 + NaN;
cnsole.log(res);    // NaN

res = "520" + "1314"
cnsole.log(res);    // 5201314

res = 1 + 2 + "3";
console.log(res);    // 33
res = "1" + 2 + 3; 
console.log(res);    // 123

res = 100 - true 
console.log(res);    // 99

res = 100 - "1" 
console.log(res);    // 99

注意:

  ①当 + 对两个字符串实现字符串拼接。任何值和字符串进行加法运算,都会先转换为字符串,再和字符串做拼接。

我们可以根据这一特点,将一个任意字符串转换为String类型。实际也是调用String(),由浏览器自动完成。

var love = 520;
love = love + "";

console.log(typeof love);    //string
console.log(love);        // "520"


②任何值和NaN运算都是NaN

③任何值做 - * / 运算时,都会自动转换为Number

我们可以利用这一特点,采用 -0 *1  /1将其转换为Number类型

var res = "520";
res = res - 0;
console.log(typeof res);    //Number
  • 一元运算符

+ (正号)、- (负号),还有强制转换为Nunmber类型的功能。

var n = 123;
n = -n;
console.log(n);    // -123

n = "111";
console.log(n);    // "111"
console.log(typeof n);    // String
n = +n;
console.log(n);    // 111
console.log(typeof n);    // Number
  • 自增和自减
var n = 1;
n++;
console.log(n);    // 2

var b=1
++b;
console.log(b);    // 2

var m = 1;
console.log(m++);    // 1
console.log(++m);    // 2
  •  逻辑运算符

1、非 !

取反,不影响原值

如果对非布尔值进行运算,会先转换为布尔值,然后再取反。

可以对一个任意数据取两次反,实现转换为非布尔值的结果 

var n = 10;
n = !!n;

console.log(n);    // true
console.log(typeof n);    //boolean

2、与 &&

JS中的与属于短路与。

对于非布尔值,会先将其转换为布尔值,然后再运算,但是返回原值;无论结果如何,都返回后面的。

var res = 0 && 5;
console.log(res);    // 0
res = 2 && 7
console.log(res)    // 7

3、或 ||

JS中的或为短路或。

对于非布尔值,会先将其转换为布尔值,然后再运算,但是返回原值;如果两个值都为false,则返回后面的;如果两个值都为true,则返回前面的。

  • 赋值运算符        =、+=、-+、*=、/=、%=
var n =  10;
n += 5;    //等价于 n = n + 5;
  • 关系运算符

通过关系运算符比较两个值的大小关系,成立返回true,否则返回false。

对于非数值进行比较时,先转换为数值型;任何值和NaN比较,都是false。

如果比较两个字符串,不会将其转换成数值比较,而会比较字符串的字符编码(unicode编码);按位进行比较,所以大小跟位数关系不大。

  • 逗号运算符
var a, b, c
  • 运算符优先级

可以使用()改变优先级。

  • 代码块 

一个{ }中的语句我们也成为一个 代码块,实现分组。

代码块的后面就不用在编写  ;了

  • prompt()

可以弹出一个提示框,可以输入文本,返回值是String类型。

  • 条件分支语句 switch

(1)判断全等,使用break跳出单个分支。

(2) 如果case没有break,会一直向下执行。

(3)default相当于if中的else

  • while

可以用break语句结束循环。

  • for

1、for循环条件可以省略,但分号不可省略。

var i=0;
for(;i<10;){
   i++ 
}

2、break结束就近循环。

3、可以为循环创建label,来标识当前循环:

outer:    
for(var i=1;i<10;i++){    //label名为outer
    for(var j=0;j<10;j++){
        console.log(j)
        if(j==5){
            break outer;    //直接终止名为label的循环
        }
    }
}

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值