JavaScript变量相关的定义

JavaScript 是弱类型脚本语言,使用变量之前,可以无须定义,想使用某个变量时直接使用即可。
JavaScript脚本语言,对大小写敏感。

javaScript 支待两种方式来引入变量:

1、隐式定义: 直接给变量赋值。
2、显式定义:使用 var 关键字定义变量。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script type="text/javaScript">
        var x="显式声明";
        y="隐式声明";
        alert(x);
        document.write(y);  
    </script>
</head>
<body>
</body>
</html>

强制类型转换:

1、toString(): 将布尔值、数值等转换成字符串。
2、parselnt(): 将字符串、布尔值等转换成整数。
3、parseFloat(): 将字符串、布尔值等转换成浮点数。
用parseInt(),parseFloat()把不是以数值开头的字符串转换时,转换成 NaN。
例如:

  var a = "12.3aaa4"; 
  a=parseFloat(a);  //结果:a=12.3
  var b = "aa12.3";
  b=parseFloat(b);  //结果:b=NaN
  alert(a+"\n"+b);

undefined 、null、布尔值及其他对象: 一律转换成 NaN。

变量作用域:

全局变量可以被所有的脚本访问。
在函数里定义的变量称为局部变量,局部变量只在函数内有效。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script type="text/javaScript">
         // 全局变量
        var text = "全局变量";
        function fun(){
            // 在函数里用var声明的是局部变量,只在函数体里生效
            var isMale = "局部变量";
            // 不用var声明在函数里是全局变量,函数外也可以访问
            opo = 199;
        }
        //函数调用
        fun();
        alert(text+"\n"+opo);//全局变量   199
        alert(isMale);  // 报错,找不到声明
    </script>
</head>
<body>
</body>
</html>

JavaScript没有块作用域,与c,java等语言不同.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script type="text/javaScript">
        function fun() {
            if (true){
            // 定义变量 j,变量j的作用范围是整个函数内,而不是块内 
                var j = 5 ;
                for(var k = 0; k < 10; k++){
                    // 因为 JavaScript 没有代码块范围
                    // 所以k的作用范围是整个函数内,而不是循环体内 
                    document.write (k) ;
                } 
            } 
            //  即使出了循环体, k 的值依然存在 
            alert(k + "\n" + j) ; 
        }
        fun();
    </script>
</head>
<body>
</body>
</html>

运行结果:
在这里插入图片描述
在这里插入图片描述

JavaScript变量提升机制:

在函数里,只提升声明部分,不提升赋值部分
(undefined)代表只声明,不赋值或者对象里面没有这个变量

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script type="text/javaScript">
      var scope = "全局变量";
      function fun(){
          document.writeln(scope+"<br>");
        //   变量提升至函数一开始定义,但是不赋初值
          var scope = "局部变量";
          document.writeln(scope+"<br>");
      }
      fun();
    </script>
</head>
<body>
</body>
</html>

运行结果:
undefined
局部变量

函数内实质运行机制:

function fun(){
          var scope;
          document.writeln(scope+"<br>");
          scope = "局部变量";
          document.writeln(scope+"<br>");
      }

css3新增的let变量

var定义变量的问题
1、没有块作用域
2、var 定义的全局变量会自动添加全局 window 对象的属性。
3、var 定义的变量会提前装载 。
let定义变量
1、有快作用域。
2、let定义的变量不会添加到window对象中。
3、不会提前装载。
使用let把var的问题全部弥补了,所以使用let定义变量更符合规范

var提前装载,也就是变量提升问题,在let中报错:

<script type="text/javascript"> 
	var name= 'yeeku' 
	function func(){ 
		//下面的 name 变量不存在, 因此程序导致错误 
		console.log (name) ; 
		let name= 'www'; 
		console.log (name) ; 
	}	 
	func () ; 
</script> 

使用const定义常量

const:定义常量,在声明时必须赋值。且不能修改。

const MAX_LEAVE = 120
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值