JavaScript(1)

本文详细讲解了JavaScript中的自动类型转换,如+运算符的混合使用,parseInt()和parseFloat()的用法,以及变量作用域的规则,包括全局变量、局部变量和块级作用域。还介绍了let和const关键字的区别,以及字符串操作、正则表达式和数据类型等内容。
摘要由CSDN通过智能技术生成

 <script text="text/javascript"> </script>

自动类型转换

在JavaScript中有自动类型转换

+ 在JavaScript里面可以是字符拼接符,也可以是运算符,当 + 左右两边都是数字则是加法,否则是字符串拼接

 <script text="text/javascript">         

//定义字符串变量         

var a = "3.145";         

//让字符串变量和数值执行算数运算         

var b = a - 2;         

var c = a + 2;         

//输出b和c的值         

alert(b + "\n" + c); </script>

parseInt() 将字符串转换为整数

parseFloat() 转换成浮点数,只会把碰到的非字母的数字转换成数字,一遇到字母就会停止继续转换

<script text="text/javascript">         

//定义字符串变量         

var a = "j3.145";         

alert(parseFloat(a)); </script>

<script text="text/javascript">         

//定义字符串变量         

var a = "3.ddd145";         

alert(parseFloat(a)); </script>

<script text="text/javascript">         

//定义字符串变量        

 var a = "3.145dfvdf";         

alert(parseFloat(a)); </script>

当字符串不是数字开头是转换成NaN,像undefined、布尔类型的值、都转换成NaN

转换后的不是数字就是NaN

变量作用域

在函数中不加var定义的变量都是全局变量,隐式定义变量

<script text="text/javascript">         

var test = "全局变量";         

function myFun() {             

age = 20;             

var male = "局部变量";         

}         

myFun();         

alert(test + age + male); </script>

因为male是局部变量

当全局变量和局部变量名字相同时,局部变量会覆盖全局变量

    <script text="text/javascript">         

var test = "全局变量";         

function myFun() {             

var test = "局部变量";             

alert(test);         

}         

myFun();     

</script>

块范围:JavaScript中一般没有块范围

typeof单目运算符

    <script>        

 function test(o) {             

var i = 0;            

 if (typeof o == "object") {                

 var j = 5;                 

for (var k = 0; k < 10; k++) {                     

console.log(k);                 

}                 

console.log(k);             

}             

console.log(k + "\n" + j);         

}         

test(window);     </

script>

if语句组成了块,for也组成了块,出了for循环仍然可以用k这个变量,但它仍然是局部变量,不能够出函数这个范围

let定义的变量有块范围

    <script>         

function test(o) {             

if (typeof o == "object") {                 

let j = 5;                 

for (let k = 0; k < 10; k++) {                    

 console.log(k);                 

}                 

console.log(k);            

 }            

 console.log(k + "\n" + j);         

}         

test(window);    

 </script>

全局变量对HTML事件处理依然有效

<!DOCTYPE html> 
<html lang="en">
 <head>     
<meta charset="UTF-8">     
<meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Document</title>     
<script>         
var x = "全局变量";     
</script> </head> <body>     
<!-- HTML事件处理 onclick="alert(123)" -->     
<input type="button" value="局部变量" onclick="alert(x)"> 
</body> 
</html>

变量提升机制  

 <script>         
//定义全局变量         
var scope = "全局变量";         
function test() {             
document.writeln(scope + "<br >");
//输出undefined             
//定义scope局部变量,其作用范围为整个函数内             
var scope = "局部变量";             
//再次输出scope的值             
document.writeln(scope + "<br >");//输出局部变量         
}         
test();     
</script>

//变量提升

//下面的代码解释变量提升,所以要正规定义并赋值变量

    <script>         
//定义全局变量         
var scope = "全局变量";         
function test() { 
var scope;//定义             
document.writeln(scope + "<br >");             
//定义scope局部变量,其作用范围为整个函数内             
scope = "局部变量";//赋值             
//再次输出scope的值             
document.writeln(scope + "<br >");         
}         
test();     
</script>

let关键字

let有块范围

let定义的变量不会强加给window

let定义的变量不会变量提升(提前转载)

const常量

必须定义时初始化值,且后面不能修改

命名规则

一般用全大写字母作为变量名

如果是多个单词,中间使用_连接

基本数据类型

字面量创建数值类型

var a = 10

面向对象创建数据类型

var a = new Number("10");

科学计数法使用51.2E2来表示,其中E不区分大小写,举例:5.12e3、4E-4

正无穷大和负无穷大

Infinity 和 -Infinity

且二者相加为NaN

NaN是Not a Number

isNaN()判断一个数是否是NaN

NaN==NaN为False

<input type="text" id="gyj">     
<input type="button" value="验证是否为数值" id="check">     
<script>         
var gyj = document.getElementById("gyj");    
var check = document.getElementById("check");        
check.onclick = function() {             
var val = gyj.value             
val = parseInt(val)             
if (isNaN(val)) {                 
alert("不是整数")             
} else {                 
alert("是整数")             
}         
}     
</script>

JavaScript中快速得到特殊数值的方法:

NaN Infinity 和 -Infinity 最大和最小

浮点数精度会丢失,若想比较,则使用差值法

字符串类型

JavaScript的字符串必须用引号,可以双可以单 比较是否相等可以直接用==

String()

 <script>         

var a = String("你好")         

console.log(a)     

</script>

charAt()

charCodeAt()

length(是一个属性,不是方法)

fromCharCode()

 

<script>         
var a = String("dhufghsjksl")         
var b = a.charAt(2)//获取字符串的第三个字母         
var c = a.charCodeAt(2)//获取字符串第三个字母的Unicode值         
var d = a.length //获取字符串的长度         
var e = String.fromCharCode(99)//获得Unicode为99的值 console.log(a + '\n' + b + '\n' + c + '\n' + d + '\n' + e)     
</script>

toLowerCase()

toUpperCase()

<script>         

var a = String("dhufgOOOhsjksl")         

var b = a.toLowerCase() //全部转化成小写字母         

var c = a.toUpperCase() //全部转化成大写字母         

console.log(a + '\n' + b + '\n' + c)     

</script>

indexOf()

lastIndexOf()

    <script>         var a = String("dhufglhsgjksl")         var b = a.indexOf('hufg') //寻找hufg第一次出现的位置,若没有就返回-1 若有就返回对应的位置         var c = a.lastIndexOf('l') //寻找l最后一次出现的位置,若没有返回-1 若有就返回对应的位置         var d = a.indexOf("g", 6) //跳过6个字符寻找g         var e = a.length         console.log(a + '\n' + b + '\n' + c + '\n' + d + '\n' + e)     </script>

substring()

slice() 二者功能相似,但是slice()可以接收负数作为索引

要头不要尾

   

<script>         
var a = String("dhufglhsgjksl")         
var b = a.substring(4, 9)//截取第五个字符(包括)到第十个(不包括) 
var c = a.slice(4, -1)//截取第五个字符(包括)到最后一个(不包括)         
var d = a.slice(-1)//单独截取最后一个         
var e = a.length         
console.log(a + '\n' + b + '\n' + c + '\n' + d + '\n' + e)     
</script>

match() 返回字符串数组或null 支持使用全局匹配 通过g标志表示全局匹配

search() 返回索引值

二者都支持使用正则表达式作为子串

<script>         
var a = String("dh11ufglh22s54gjksl")         
var b = a.match(/\d/g); //寻找所有数字,最终组成数组,g表示全局匹配 
var c = a.search(/\d/); //寻找第一次数字的位置         
console.log(b) console.log(c)     
</script>

不能用这种形式输出:console.log(a + '\n' + b + '\n' + c)

否则

concat()

split()

replace()

<script>
        var a = "dh1"
        var e = "as2"
        var d = "df3"
        var f = a.concat(e, d)
        
        console.log(f)
        var b = "sjdfbsigsiudvuo"
        var c = b.split("s") //以s来把字符串分割成组数
        console.log(f)
        console.log(c)
        
        var text = "dsfnosgufuigs"
        var text1 = text.replace(/s/g, "青城") //把所有的7换成青城
</script>

boolean(布尔类型)

ture和 false(!)

undefined

定义变量但没赋值

对象的属性不存在

null

null==undefined(true)

null===undefined (false 恒等 还要比较类型)

正则表达式

JavaScript中正则表达式必须在 // 两个斜线之间

提供了test()方法来判断是否符合正则表达式的规则

    <script>
        var str = "dsfhuhn"
        var reg = /^[a-c]{3}@:/ //字面量的方式定义正则表达式 开头必须是a-c且必须出现三次 @无关紧要
        console.log(reg.test(str)) //返回false  aaa@:dijfduiv返回true
    </script>

定义正则表达式有两种方式

var reg = new RegExp("/^[a-c]{3}@")//面向对象的方法定义正则表达式
    <script>
        var text = "1112ab"
        var reg = /^[a-c0-9]{6}$/
        var flag = reg.test(text)

        function check() {
            if (text.trim() == "") {
                console.log("密码不能为空")
                return
            }
            if (!flag) {
                console.log("密码不对,密码必须是六位,并且是数字和字母")
                return
            }
            console.log("密码正确")
        }
        check()
    </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赚钱去流浪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值