xiaochengzi6 / Blog

个人博客
GNU Lesser General Public License v2.1
0 stars 0 forks source link

关于C语言的int启发应用于js #35

Open xiaochengzi6 opened 2 years ago

xiaochengzi6 commented 2 years ago

js是弱类型的语言,对于变量的命名没有任何要求,还可以随意并多次命名:

var i = 1;
var i = "string";
var i = function person (){
    console.log("Yes")
}

这些都是成功的;

但能不能像C语言的int方法来定义变量的类型,c语言中如果再次(变量名)变更就会报错;

#include <stdio.h>
int main(void){
    int a=88,b=89;
    printf("%d %d\n",a,b);
    return 0;
}

在看到在函数中定义严格模式的时候我有了启发:

function person(){
    "use strict"
    //....
}

当程序在执行这个函数时就查取到到这个 "use strict"并将以下代码执行在严格模式下;

那么我们能不能也借用c语言的形式能,在某种程度上可以保障变量的“不变性”,又能体会到js的弱类型的香甜呢

不妨设想一下:

//1
function person(){
    number "age,sum,i";
    str "name,home";
    //..
}

或者是这样的形式:

//2
function person(){
    "name age,sum,i";
    "string name,home";
    //....
}

注意:这些都是我天马行空想出来的,在编译器上这些会报错,在其他的地方也没有我这样来编写js的,

在代码1中我想使用一种新的关键字来定义这样的变量,但多方查找并没又搜到这样的案例,我想创建一种新的关键字,在js中有 new,function,var,let,const,class,等等,但这些好像都不能自己定义,我编写的代码一定要能运行在现在js上的,要不然它的实用性就等很小,但在后面的日子我又了解到了一种语言TS它里面包含了js语言且语法为这样:

//var [变量名] : [类型] = 值;
var name:string = "Perter";

我感到兴奋和沮丧,原来有人比我先一步想到并做的看起来”更好“;(有点不太服气)

那我能不能像代码2一样会自动读取我自己的自变量

function person () {
    "name, age, sum , i";
    "string, name, home"
}

这段代码没有报错,成功运行,但是这样的方式我要它也没有什么用啊

在返现ts后我开始有些“萎缩”了我发现了一个比我想得更加“周到”的

所以我又换了一种思路在函数内部获取所有变量

function person(){
    //代码行
    //...
    //...
    function (){
        //在这里获取函数全局变量用于检测
    }

}

将所有的变量的每次赋值的操作记录下来,放置在一个json中,然后可以某种可视化操作;

这种方法类似于 :

for (var i = 0;i<length;i++){
    (function(){
        setTimeout(console.log(i),0)
    })(i)
}

在函数内放置一个闭包函数,然后获取外边的变量,并将其保存起来

这样的方法用于简单的测试,在执行中每一步是否达到了自己的想要输出的结果;

这该不会是单元测试里面的概念吧(虽然我还没有接触单元测试,但我已经有所预感)期望我这个想法是多余的;