When creating shaders you must change your way of thinking. Those are not conditional logic with different flow paths, but instead they are mathematical formulas. You calculate stuff and output the result.
Yes, you can compare and do stuff like you tried above, however when possible you should try to avoid it, mainly for performence reasons ( also there are different kind of branching ).
Let’s break down your shader.
First of all you might notice that connection between texture and comparison turns from pink to blue, it means the first component (x) is used in comparison. That means that you only check if red channel is zero - what if your emission is green only?
Second, equality comparison with floating point numbers is not good idea, it might work in case of zeros, but otherwise it might fail because numbers are not precise.
Third, your branch is actually “slow” branch, because you are testing value that comes from texture and it’s not uniform for all pixels.
In such a case local keyword is better way to handle this. It will compile variants of this shader for provided inputs, and you can enable or disable that keyword via code or with checkbox in material inspector.
This is how I understand “null” texture, but if you need to check whatever it’s black or something else, then you could use this texture as mask by multiplying by it. Also can use lerp instead of branch.
I am not sure if there is something I misunderstood, because I don’t understand why you need this branch at all.
If you multiply your emission colors by black (0) you always get zero, so if there is blank, missing, empty image, then you get zero, and if you add zero to any number it’s still the same number.