JavaScript基础学习(1)

java script基本概念

概念:解释型预言 程序执行之前,不需要对代码进行编译,在运行时边解析边执行的语言

作用:

  • HTML提供网页上显示的内容
  • CSS美化网页(样式)
  • JavaScript控制网页行为

书写格式:

  • 1.行内样式:写在标签内部
  • 2.内嵌样式(内联样式):写在一对head标签中
  • 3.外链样式:写在一个单独的.js文件中,再导入进来

tips:

  • 不推荐直接将Javascript代码书写到标签内部
  • 默认情况下浏览器会从上至下解析网页,所以如果JavaScript写道一对head标签中,并且需要通过JavaScript代码操作界面上的元素,那么就不能直接书写JavaScript代码,否则无效
  • 如果想将JavaScript代码写到一对head标签中,并且需要在JavaScript代码中操作界面上的元素,那么必须加上window.οnlοad=function(){操作界面元素的JavaScript}
  • window.onload的含义:等到界面上所有的内容都加载完毕,再执行大括号中的代码
  • 由于默认情况下浏览器会从上至下的解析网页,所以如果想通过JavaScript操作界面上的元素只需要等到元素被加载解析之后操作即可,所以还可以将JavaScript代码写在body结束标签之前
  • 如果通过外链式导入.js文件,并且需要再.js文件中操作界面的元素,那么如果时head标签中导入的,必须在.js文件中加上 window.onload,如果是在body结束标签前面导入的,那么不用添加window.onload
  • 如果需要在一对script标签中编写JavaScript代码,那么就不能同时通过script标签再导入其他的.js文件,否则书写的JavaScript代码无效

常见输出方式

1.通过弹窗的形式来输出

  • alert(需要输出的内容)//弹出一个警告框
  • confirm(需要输出的内容)
  • prompt(需要输出的内容)
  • tips:
    1.如果需要输出的内容不是数字,那么必须通过单引号或者双引号括起来
    2.在JavaScript中是严格区分大小写
    3.在编写JavaScript代码的时候,一定要记住每一句代码后面都需要添加一个分号,并且必须是英文的分号
    4.当不写分号程序也能运行时,不是因为不需要分号,而是浏览器自动添加了分号,浏览器自动添加会消耗一定性能,并且有可能会添加错误

2.通过网页内容区域的形式来输出

  • document.write(需要输出的内容)
  • tips:
    1.如果需要输出的不是数字,那么必须通过单引号或者双引号括起来

3.通过开发者工具控制台的形式来输出

  • console.log(需要输出的内容);//普通输出
  • console.warn(需要输出的内容);//警告输出
  • console.error(需要输出的内容);//错误输出
  • 如果需要输出的不是数字,那么必须通过单引号或者双引号括起来

JavaScript基础

作用;

  • alert(需要输出的内容);//弹出一个警告框
  • document.write();//向body中输出一个内容
  • console.log();//想控制台输出一个内容

1.可以将JavaScript代码编写到标签的onclick属性当中,点击按钮时,JavaScript代码才会执行
虽然可以写在标签的属性中,但属于结构与行为耦合,不方便维护,不推荐使用

2.可以将JavaScript代码写在超链接的href属性,这样点击超链接时,会执行js代码

<a href="javascript:;">...</a>
点超链接无反应,通过js实现一些功能

3.可以将js代码写道script标签中
4.可以将js代码编写到外部js文件中,然后通过script标签引入

  • 写在外部文件中可以在不同的页面中同时引用,也可以利用到浏览器的缓存机制(推荐)
  • script标签一旦用于引入外部文件,就不能再编写代码,即使编写了浏览器也会忽略,如果需要则可以再创建一个新的script标签用于编写内部代码

/* */:js注释,多行注释
注释中的内容不会被执行,但是可以在源代码中查看
//…单行注释,//后为注释内容,养成编写注释的习惯

js会自动忽略多个空格和换行,可利用空格和换行对代码进行格式化

字面量和变量

字面量:都是一些不可改变的值,都可以直接使用,但一般都不会直接使用字面量

变量:用于保存字面量,且变量的值可以任意改变,变量更加方便使用,所以在开发中都通过变量去保存一个字面量,很少直接使用字面量

1.声明变量:

  • 在js中使用var关键字来声明一个变量

2.为变量赋值

var a;
a=    ;

同时声明和赋值

var a=         ;

可以通过变量对字面量进行描述

标识符

标识符:在js中,所有由我们自主命名的都可称为标识符
如:变量名,函数名,属性名

命名一个标识符需要遵守如下规则

  • 标识符中可以含有字母数字下划线美元符

  • 标识符不能以数字开头

  • 标识符不能是js中的关键字或保留字

  • 标识符一般都采用驼峰命名法(直观)
    首字母小写,每个单词开头字母大写,其余小写

  • js底层保存标识符时实际上采用的Unicode编码,所以理论上UTF-8含有的内容都可以作为标识符

数据类型

数据类型:字面量类型
在js中一共有6种数据类型:String:字符串;Number:数值;Boolean:布尔值;Null:空值;Undefined:未定义;Object:对象;

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

String字符串:在js中字符串需要使用引号括起来,使用双引号或者单引号均可,但是不能混合使用,引号不能嵌套双引号中不能再嵌套一个双引号,单引号中也不能放单引号

在字符串中可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义

‘’ 表示’’
’ 表示‘
\n表示换行
\t制表符
\表示\

在js中所有的数值都是Number类型,包括整数和浮点数,可以使用一个运算符typeof来检查一个变量的类型语法

  • 检查字符串时,会返回String
  • 检查数值时,会返回Number

js中可以表示的数字的最大值 Number.MAX_VALUE;
如果使用Number表示的数字超过了最大值,则会返回一个Infinity(正无穷)-Infinity(负无穷)
使用typeof检查Infinity也会返回Number
在js中整数的运算基本可以保证精确,浮点运算可能得到一个不精确的结果

千万不要使用js进行精确度较高的运算

Boolean布尔值
布尔值只有两个

  • true:真
  • false:假

主要用于逻辑判断
使用typeof检查布尔值时,会返回Boolean

Null
Null类型的值只有一个就是null
null值专门用来表示一个为空的对象
使用typeof检查null值时,会返回object

Undefined
Undefined类型的值只有一个:undefined
当声明一个变量,但并不是给变量赋值的它的值就是undefined
用typeof检查undefined也会返回undefined

为任意的数据类型做两次非运算,即可将其转换为布尔值

强制类型转换

强制类型转换:指将一个数据类型强制转换成其他的数据类型
类型转换主要是指将其他的数据类型转换为String,Number,Boolean

1.将其他数据类型转化为String

方式一:调用被转换数据类型的toString()方法

a=a.toString()

该方法不会影响到原变量,会将转换结果返回
注意:null和undefined没有toString。如果调用会报错

方式二:调用String()函数,并将被转换的数据作为参数传递给函数

a=String(a)

使用String()函数做强制转换时,对于Number和Boolean实际上就是调用toString方法(没区别),但对null和undefined就不会调用toString(),而是将null直接转换为“null”,将undefined直接转换为“undefined”

2.将其他数据类型转换为Number

方式一:使用Number()函数
a=Number(a);

  • 如果是纯数字的字符串,则直接将其转化为数字
  • 如果字符串中有非数字的内容

布尔值转成数字
true转成1;false转成0
null转成数字0;
undefined 转成数字
NaN

转换方式:(专门用于字符串)

  • parseInt()把一个字符串转换成一个整数
    可将一个字符串中的有效的整数内容取出来
  • parseFloat()把一个字符串转换成一个整数
  • parseInt()和parseFloat()作用类似,parseFloat()可以获得有效的小数
  • 如果对非String’使用parseInt()或parseFloat()会先转化为String,然后操作。

其他进制的数字

  • 在js中,如果需要表示16进制的数字,则需要以0x开头
  • 如果需要表示8进制的数字,则需要以0开头
    像070这种字符串,有些浏览器会当成8进制解析,有些会当成10进制解析
  • 如果要表示二进制数字,则需要0b开头,但不是所有的浏览器都支持
  • 可以在parseInt()中传递一个第二个参数,来指定数字的进制

3.将其他的数据类型转换为Boolean

使用Boolean()函数

  • 数字转布尔:除了0和NaN其余的都是true
  • 字符串转布尔:字符串除了空串都是true
  • null转换成布尔:false
  • undefined转布尔:false
  • 对象转布尔:true

算数运算符(操作符)

通过运算符可以对一个或多个值进行运算,并获取运算结果
例如:typeof是一个运算符,可以来获得一个值的类型,它会将该值的类型以字符串的形式返回

算术运算符:+ - * / %

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

  • 任何数和NaN运算结果都是NaN

  • 如果对两个字符串进行加法操作,会做拼串操作,将两个字符串拼接成一个字符串,并返回

  • 任何的值和字符串做加法运算都会先转换成字符串,再做拼串的操作
    可以利用这一特点,来将一个任意的数据类型转换为String,只需要为任意的数据类型加一个“”即可转换为String
    这是一个隐式的类型转换,由浏览器自动完成,也是调用String()函数

  • 任何值做减乘除运算时,都会自动转换成Number
    可以通过为一个值减0/乘1/除1来将其转换为Number
    原理和Number()函数一样,使用起来更加简单

  • %取模运算(取余数)

一元运算符

只需要一个操作数

  • “+”正号,正好不会对数字产生任何影响
  • “-”负号,负号可以对数字取反
  • 对于非Number类型的值,会先将其转换成Number,然后再运算
  • 可以对其他的数据类型使用+,来将其转换成Number,原理和Number函数一样

自增和自减
自增:通过使用自增可以使变量在自身的基础上增加1

  • 对于一个变量自增以后,原变量的值会立即增加1
  • a++ :使a自增1
  • 自增分为两种:
    a++(后++):值等于原变量的值(自增前的值)
    ++a(前++):值等于原变量的新值(自增后的值)
    无论是哪种副都会使原变量的值自增1,不同的是a++和++a的值不同
  • 自减:通过自减可以使变量在自身的基础上减1
  • 自减分为两种:
    a–:值等于原变量的值(自减前的值)
    –a:值等于原变量的新值(自减后的值)
    无论那种都会使原变量的值自减1,不同的是a–和--a的值不同

逻辑运算符
js中为我们提供了三种逻辑运算符

  • ! 非
    可以用来对一个值进行非运算,所谓非运算就是值对一个布尔值进行取反操作
    如果对一个值进行两次取反,它不会变化
    如果对非布尔值进行运算,则会有其转换为布尔值,然后再取反,利用该特点来将一个其他的数据类型转换为布尔值,可以为一个任意数据类型取两次反,来将其转换为布尔值,原理和Boolean函数一样

  • && 与
    可以对符号两侧的额值进行运算并返回结果
    如果两个值都是true,则返回true
    只要有一个false,就返回false
    js中的与属于短路的“与”如果第一个值为false,则不会看第二个值

  • || 或
    对付两侧的值进行或运算并返回结果
    两个都是false会返回false
    只有一个true,就会返回true
    第一个值为true,则不会检查第二个值

&& || 非布尔值的情况
对于非布尔值的与或运算时,会先将其转换为布尔值,然后再运算,并且返回原值

与运算:

  • 如果第一个值为true,则必然返回第二个值
  • 如果第一个值为false,则必然返回第一个值

或运算:

  • 如果第一个值为true,则直接返回第一个值
  • 如果第一个值为false,则直接返回第二个值

赋值运算值

  • =
    可以将符号右侧的值赋值给符号左侧的变量

  • +=
    a+=5等价于a=a+5

  • -+ *= /= 同理

关系运算符
通过关系运算符可以比较两个值的大小关系
如果关系成立它会返回true,如果关系不成立则返回false

  • 大于号
    判断符号左侧的值是否大于右侧的,如果关系成立,返回true
    如果关系不成立,则返回false

  • = 大于等于
    判断符号左侧的值是否大于等于右侧的

  • <= 小于等于

  • 非数值的情况:对于非数值进行比较时

  • 比较两个字符串时,比较的是字符串的字符编码

  • 比较字符编码时是一位一位进行比较

  • 如果两位一样则比较下一位,所以借用它的英文排序,比较中文没有意义

  • 如果比较两个字符串型的数字,可能不会得到预期的结果,
    注意:比较两个字符串型的数字时一定一定要转型

Unicode编码表
在字符串中使用转义字符输入Unicode编码:\u四位编码
在网页中使用Unicode编码:&#编码;(需要的编码是十进制)

相等运输符
作用:用来比较两个值是否相等,如果相等会返回true,否则返回false

  • 使用==来做相等运算

  • 当使用==来比较两个值时,如果值的类型不同,就会自动进行类型转换,使其转换为相同的类型,然后再比较
    特殊 console.log(null==0);//false

  • undefined衍生自null,所以两个值做相等判断时,会返回true

  • NaN不和任何值相等,包括本身
    可以通过isNaN()函数来判断一个值是否是NaN
    如果该值是NaN,则返回true,否则返回false

不相等:
作用:用来判断两个值是否不相等,如不相等则返回true,否则返回false

  • 使用!=来进行不想等运算
  • 不相等也会对变量进行自动的类型转换,转换后相等也会返回false

全等===
不会做自动的类型转换,类型不同直接返回false

不全等 !==
不会做自动的类型转换,类型不同直接返回true

条件运算符(三元运算符)
语法;

条件表达式?语句1:语句2;

执行流程;:条件运算符在执行时,首先对条件表达式进行求值,如果该值为true则执行语句1,并返回执行结果,如果该值是false,就执行语句2,并返回执行结果

如果条件的表达式的求值结果是一个非布尔值,会先转化为布尔值再运算

运算符优先级
一般可以在声明多个变量时使用,使用逗号可以分割多个语句

  • 可以同时声明多个变量并赋值
  • 在js中有一个运算符优先级的表,在表中越靠上优先级越高,越先优先计算
  • 如果优先级一样,则从计算式的从左往右计算
  • 表不需要记忆,如不清楚优先级可以使用括号()来改变优先级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值