夜光带你走进JavaScript(八)擅长的领域

夜光序言:

 

留一阵冰清澈骨的痛,裹一身素素淡淡的忧,何时你才能读懂那一双多情的眼眸。

 

 

 

 

 

 

 

 

正文:嗯唔~~  JS中的let变量:

let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];

let允许你声明一个作用域被限制在块级中的变量、语句或者表达式。

在Function中局部变量推荐使用let变量,避免变量名冲突。

 


作用域规则

let 声明的变量只在其声明的块或子块中可用,这一点,与var相似。

二者之间最主要的区别在于var声明的变量的作用域是整个封闭函数。

function varTest() {
    var x = 1;
    if (true) {
        var x = 2;       // 夜光:同样的变量
        console.log(x);  // 2
    }
    console.log(x);  // 2
}

function letTest() {
    let x = 1;
    if (true) {
        let x = 2;       // 夜光:不同的变量    
        console.log(x);  // 2  
    }
    console.log(x);  // 1
}

 

核心1:我们 → JavaScript 允许重复声明变量,后声明的覆盖之前的

var a = 1111;
var a = 'x';
console.log(a);
// 嗯唔,输出 'x'

核心2:嗯唔,JavaScript 允许重复定义函数

JavaScript 没有重载这个概念,它仅依据函数名来区分函数。

后定义的同名函数覆盖之前的,与参数无关。

function test() {
    console.log("test");
}
test();     //输出 "test arg0 + undefined"

function test(arg1) {
    console.log("test arg" + arguments.length + " + " + arg1);
}
test(1,2);  //输出 "test arg2 + 1"

实参个数如果比形参少,那么剩下的默认赋值为 undefined

如果实参传的比形参数量多,那么是全部都会被传进去的

只不过没有对应的形参可以引用(但可以用 arguments 来获取剩下的参数)。

function test(arg1) {
    for(var i=0; i<arguments.length; i++) {
        console.log(arguments[i]);
    }
}
test(1,2); //输出 1 2

核心3:变量与函数重名的时候,变量生效

这涉及到了变量和函数的预解析:

  • 变量声明会被顶置,函数声明也会被顶置且比变量更先声明。
  • 变量的声明和赋值语句一起写时,JS引擎在解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置。
  • 声明过的变量不会再重复声明。
var a = 100;
function a() {
    return "function";
}
console.log(a);     //输出 100
console.log(a());   
/*
报错
Uncaught TypeError: a is not a function
    (anonymous function) @test.html:9
*/

JS 中有两种函数,一种是普通函数,一种是函数对象。

 


下面的这种就是“函数对象”,它实际上是声明一个匿名函数,然后将该函数的 init 方法赋值给该变量。

 

var a = 100;
var a = function() {
    return "function";
}
console.log(a);
/* 
输出
function() {
    return "function";
}
*/
console.log(a());   //输出 "function"

 


核心4:函数与内部变量重名

定义普通函数,即在 window 变量下,定义一个 key,它的名字为该函数名,值为该函数的地址。

嗯唔~~   函数内部的 this 指向 window 对象。

function a() {
    console.log(this);  //嗯唔~~~  输出 window{...}
    this.a = 1;         //夜光:即 window.a = 1,此时window下的function a已经被该变量覆盖了。
    var a = 5;          //下面的这几个变量都是局部变量,仅在花括号范围内有效。  
    a = 10;
    var v = "value"
    return "function";
}
console.log(a);         //输出 function a {...}
console.log(a());       //输出 "function"
console.log(a);         //输出 1
console.log(v);
/*
输出
Uncaught ReferenceError: v is not defined
    (anonymous function) @ mycolor.html:15
*/

JavaScript 数据类型


值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。



嗯唔~~~

JavaScript 拥有动态类型

JavaScript 拥有动态类型。

这意味着相同的变量可用作不同的类型:

 

var x;               // x 为 undefined
var x = 1111;           // 现在 x 为数字
var x = "Genius";      // 现在 x 为字符串

 

JavaScript 字符串

字符串是存储字符(比如 "Bill Gates")的变量。

字符串可以是引号中的任意文本。

 

我们可以使用单引号或双引号:

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>夜光</title>
</head>
<body>

<script>
    var carname1="Genius Team XC61";
    var carname2='Genius Team XC62';
    var answer1='It\'s alright';
    var answer2="He is called \"001\"";
    var answer3='she is called "002"';
    document.write(carname1 + "<br>")
    document.write(carname2 + "<br>")
    document.write(answer1 + "<br>")
    document.write(answer2 + "<br>")
    document.write(answer3 + "<br>")
</script>

</body>
</html>

 

嗯唔~~  JavaScript 数字

JavaScript 只有一种数字类型。

数字可以带小数点,也可以不带:

【极大或极小的数字可以通过科学(指数)计数法来书写:】

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>夜光</title>
</head>
<body>

<script>
    var x1=111.00;
    var x2=11;
    var y=12345e5;
    var z=12345e-5;
    document.write(x1 + "<br>");
    document.write(x2 + "<br>");
    document.write(y + "<br>");
    document.write(z + "<br>")
</script>

</body>
</html>

JavaScript 布尔,所有编程语言不可避免都会接触这个

布尔(逻辑)只能有两个值:true 或 false。

var x=true;
var y=false;


JavaScript 数组

 

<!DOCTYPE html>
<html>
<body>

<script>
    var i;
    var cars = new Array();
    cars[0] = "001";
    cars[1] = "002";
    cars[2] = "003";

    for (i=0;i<cars.length;i++)
    {
        document.write(cars[i] + "<br>");
    }
</script>

</body>
</html>

 

Undefined 和 Null

Undefined 这个值表示变量不含有值。

可以通过将变量的值设置为 null 来清空变量。

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>夜光</title>
</head>
<body>

<script>
    var person;
    var car="Genius";
    document.write(person + "<br>");
    document.write(car + "<br>");
    var car=null;
    document.write(car + "<br>");
</script>

</body>
</html>

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值